PHP str_replace无法正常工作?

时间:2013-05-26 05:09:48

标签: php str-replace

我正在尝试执行一项简单的任务,即在发送电子邮件之前将电子邮件模板存储到数据库中,检索它并在模板中填充变量。

我正在使用str_replace但由于某种原因它不适合我。更复杂的是,它适用于下面的一个模板变量,{{date}}一个确实填充,但所有其他变量都被跳过。

我的POST变量没有被填充不是问题,我甚至可以传入str_replace中的真实文本字符串,但它仍然找不到我的“模板变量”并替换它们。就在第一天。

任何想法为什么会有这种奇怪的行为?从我所看到的,日期没有什么不同?

模板

$admin_template = '<table>
    <tr>
      <td><strong>Name:</strong></td><td>{{name}}</td>
    </tr>
    <tr>
      <td><strong>Email:</strong></td><td>{{email}}</td>
    </tr>
    <tr>
      <td><strong>Website:</strong></td><td>{{website}}</td>
    </tr>
    <tr>
      <td><strong>Phone:</strong></td><td>{{phone}}</td>
    </tr>
    <tr>
      <td><strong>Source:</strong></td><td>{{source}}</td>
    </tr>
    <tr>
      <td><strong>Budget:</strong></td><td>{{budget}}</td>
    </tr>
    <tr>
      <td><strong>IP:</strong></td><td>{{{ip}}}</td>
    </tr>
    <tr>
      <td><strong>Date Submitted:</strong></td><td>{{date}}</td>
    </tr>
    <tr>
      <td><strong>Message:</strong></td><td>{{message}}</td>
    </tr>
  </table>';

处理模板的代码

// Process Admin Template
$admin_body = str_replace('{{name}}', $name, $admin_template);
$admin_body = str_replace('{{email}}', $mailFrom, $admin_template);
$admin_body = str_replace('{{phone}}', $_POST["phone"], $admin_template);
$admin_body = str_replace('{{website}}', $_POST["website"], $admin_template);
$admin_body = str_replace('{{message}}', $_POST["message"], $admin_template);
$admin_body = str_replace('{{budget}}', $_POST["budget"], $admin_template);
$admin_body = str_replace('{{source}}', $_POST["source"], $admin_template);
$admin_body = str_replace('{{ip}}', $_SERVER['REMOTE_ADDR'], $admin_template);
$admin_body = str_replace('{{date}}', date("Y-m-d H:i:s"), $admin_template);

处理后的实际输出

// Actual Output...
<table>
<tr>
  <td><strong>Name:</strong></td><td>{{name}}</td>
</tr>
<tr>
  <td><strong>Email:</strong></td><td>{{email}}</td>
</tr>
<tr>
  <td><strong>Website:</strong></td><td>{{website}}</td>
</tr>
<tr>
  <td><strong>Phone:</strong></td><td>{{phone}}</td>
</tr>
<tr>
  <td><strong>Source:</strong></td><td>{{source}}</td>
</tr>
<tr>
  <td><strong>Budget:</strong></td><td>{{budget}}</td>
</tr>
<tr>
  <td><strong>IP:</strong></td><td>{{{ip}}}</td>
</tr>
<tr>
  <td><strong>Date Submitted:</strong></td><td>2013-05-26 05:01:14</td>
</tr>
<tr>
  <td><strong>Message:</strong></td><td>{{message}}</td>
</tr>
</table>

1 个答案:

答案 0 :(得分:4)

您不断从头开始重新创建$admin_body,放弃之前的str_replace()替换:-D