在处理 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();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句