在str_replace

时间:2018-01-05 12:20:09

标签: php mysql

我正在尝试构建一个系统,其中客户端可以在构建电子邮件模板(也存储在数据库中)时使用方形标记内的短代码,然后将其替换为一行PHP代码。例如,[order_date]将替换为date("l jS F Y", strtotime($OrderDate))的值,OrderDate已在代码中进一步定义。

为此,我构建了一个包含两个字段的新数据库表 - SubOriginalSubReplacement。在上面的示例中,[order_date]位于SubOriginal字段中,date("l jS F Y", strtotime($OrderDate))位于SubReplacement字段中。

然后,当涉及通过电子邮件发送给用户时,我有以下代码:

 // Set fields (StackOverflow example - data from a previous db query)
 $OrderDate = $row['OrderDate'];

 // Get customer order confirmation template
 $sql = "SELECT DeliveryTemplateSubject, DeliveryTemplateContent FROM delivery_templates WHERE DeliveryTemplateTemplate='1'";
 $set = $link->query($sql);
 $row = $set->fetch_row();
 $MessageBody = nl2br($row[1]);

 // Make template substitutions
 $sqlsub = "SELECT * FROM templates_subs";
 $setsub = $link->query($sqlsub);
 while($rowsub = $setsub->fetch_array(MYSQLI_ASSOC))
 {
  $replacement = $rowsub['SubReplacement'];
  $MessageBody = str_replace($rowsub['SubOriginal'], $replacement, $MessageBody);
 }

 // Email customer
 $subject = $row[0];
 mail($CustomerEmail, $subject, $MessageBody);

然而,替换都是以美元符号开头的原始PHP代码。

我哪里错了?

0 个答案:

没有答案