【问题标题】:PHP - trying to put a variable value inside a filePHP - 试图将变量值放入文件中
【发布时间】:2015-05-28 10:19:24
【问题描述】:

我有一个 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),在

我试过用这种方式单独加载文件

$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)仍然会加载“inv.php”而不更改 $name 值。

【问题讨论】:

    标签: php html email


    【解决方案1】:

    如果您想替换文本 $variable,您需要使用单引号或转义变量字符 ($)

    现在 "$name" 变成 "" 并且不替换任何东西。不为变量解析单引号字符串。

    另请参阅:What is the difference between single-quoted and double-quoted strings in PHP?

    【讨论】:

      【解决方案2】:
      $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);
      

      【讨论】:

        猜你喜欢
        • 2016-01-07
        • 1970-01-01
        • 1970-01-01
        • 2011-10-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多