我有一个PHP文件(mail-mail.php),当一个表单传递给他一些信息时发送一些邮件,效果很好。
所有邮件都曾插入主文件(mail-mail.php),如此
body = <<<BODY
-THE ENTIRE HTML CODE OF THE MAIL-
BODY;
文件变得非常庞大(mail-mail.php每次运行发送3-5封邮件)很长(超过500行),如果我必须更改邮件内容则不舒服
所以我决定取出整个邮件代码,用一些带有邮件HTML代码的外部文件替换它们。
$body = file_get_contents('./mail/inv.php');
在HTML代码中,有一个变量($ name)在&lt;&lt;
我试图以这种方式单独加载文件
$body = str_replace("$name", $name, file_get_contents('./mail/inv.php'));
或者这样
$prebody = file_get_contents('./mail/inv.php');
$body = str_replace("$name", $name, $prebody);
但仍然是$ prebody(当然还有$ body)加载&#34; inv.php&#34;而不更改$ name值。
答案 0 :(得分:1)
如果要替换文本$variable
,则需要使用单引号,或者转义变量字符($
)
现在&#34; $ name&#34;成为&#34;&#34;并没有取代任何东西。单引号字符串不会被解析为变量。
另请参阅:What is the difference between single-quoted and double-quoted strings in PHP?
答案 1 :(得分:0)
$body = str_replace("$name", $name, $prebody);
因为您将$name
放在双引号中,所以它会受到字符串内variable parsing的影响(即它被替换为变量$name
的值)。
上面的行与:
相同$body = str_replace($name, $name, $prebody);
表示您尝试将变量$name
中的值替换为自身。当然,这会返回$prebody
。
将$name
放在单引号中,它将起作用:
$body = str_replace('$name', $name, $prebody);