将文件读入字符串时如何扩展文本文件中的变量?
How to expand variables that are in a text file when reading the file into a string?
在处理 html 表单输入和通过 php 发送电子邮件进行响应的上下文中,而不是在我的代码中间有一个冗长的 heredoc 赋值语句,我想要文件中的电子邮件文本并在需要时读入,根据需要扩展嵌入变量。
使用适当准备的 HTML 表单数据输入,我以前有...
$message = <<<TEXT
NAME: {$_POST["fname"]} {$_POST["lname"]}
POSTAL ADDRESS: {$_POST["postal"]}
EMAIL ADDRESS: {$_POST["email"]}
[... message body etc.]
TEXT;
将文本移动到文件然后我尝试了...
$message = file_get_contents('filename.txt');
…但发现文本中的变量没有展开,导致输出中包含变量标识符作为文字。
有没有办法在将文件读入字符串时扩展变量?
可能有重复的,如果找到我会删除。但是想到了两种方式:
如果您这样构建文件:
NAME: {fname} {lname}
然后循环$_POST
变量:
$message = file_get_contents('filename.txt');
foreach($_POST as $key => $val) {
$message = str_replace('{'.$key.'}', $val, $message);
}
如果您这样构建文件:
NAME: <?= $_POST["fname"] ?> <?= $_POST["lname"] ?>
如果 HTML .txt 或其他(不是 .php)则:
ob_start();
$file = file_get_contents('filename.txt');
eval($file);
$message = ob_get_clean();
如果是 .php 文件,则缓冲输出并包括:
ob_start();
include('filename.php');
$message = ob_get_clean();
感谢 AbraCadaver 的帮助,我将所有内容放入一个函数中,该函数将处理文件和数组,返回组合消息。我构造文件以使用 [key] 标记要插入数据的位置。奇迹般有效。谢谢。
function compose_message($file, $array) {
// reads content of $file
// interpolates values from $array into text of file
// returns composed message
$message = file_get_contents($file);
$keys = array_keys($array);
foreach ($keys as $key) {
$message = str_replace("[$key]", $array[$key], $message);
}
return $message;
}
在处理 html 表单输入和通过 php 发送电子邮件进行响应的上下文中,而不是在我的代码中间有一个冗长的 heredoc 赋值语句,我想要文件中的电子邮件文本并在需要时读入,根据需要扩展嵌入变量。
使用适当准备的 HTML 表单数据输入,我以前有...
$message = <<<TEXT
NAME: {$_POST["fname"]} {$_POST["lname"]}
POSTAL ADDRESS: {$_POST["postal"]}
EMAIL ADDRESS: {$_POST["email"]}
[... message body etc.]
TEXT;
将文本移动到文件然后我尝试了...
$message = file_get_contents('filename.txt');
…但发现文本中的变量没有展开,导致输出中包含变量标识符作为文字。
有没有办法在将文件读入字符串时扩展变量?
可能有重复的,如果找到我会删除。但是想到了两种方式:
如果您这样构建文件:
NAME: {fname} {lname}
然后循环$_POST
变量:
$message = file_get_contents('filename.txt');
foreach($_POST as $key => $val) {
$message = str_replace('{'.$key.'}', $val, $message);
}
如果您这样构建文件:
NAME: <?= $_POST["fname"] ?> <?= $_POST["lname"] ?>
如果 HTML .txt 或其他(不是 .php)则:
ob_start();
$file = file_get_contents('filename.txt');
eval($file);
$message = ob_get_clean();
如果是 .php 文件,则缓冲输出并包括:
ob_start();
include('filename.php');
$message = ob_get_clean();
感谢 AbraCadaver 的帮助,我将所有内容放入一个函数中,该函数将处理文件和数组,返回组合消息。我构造文件以使用 [key] 标记要插入数据的位置。奇迹般有效。谢谢。
function compose_message($file, $array) {
// reads content of $file
// interpolates values from $array into text of file
// returns composed message
$message = file_get_contents($file);
$keys = array_keys($array);
foreach ($keys as $key) {
$message = str_replace("[$key]", $array[$key], $message);
}
return $message;
}