PHP - 尝试将变量值放入文件中

时间:2015-05-28 10:19:24

标签: php html email

我有一个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值。

2 个答案:

答案 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);