美元($)在电子邮件模板中无效

时间:2014-06-13 11:46:36

标签: php email html-email email-client

我已经构建了自定义电子邮件模板。并使用{#paid_amount}分配了一些变量,依此类推。

所有变量都被替换,但paid_amount不符合预期。我已经取代了这样的东西:

// Text file with HTML markups
$template = file_get_contents($template_url);

$paid_amount = '$1.00';
$pattern = array( 
              '/\{\#user_name\}/i', 
              '/\{\#paid_amount\}/i', 
              '/\{\#duration\}/i'  );
$replacement = array( 
              $user_name, 
              $paid_amount, 
              $duration );

$new_template = preg_replace($pattern, $replacement, $template);

它会在电子邮件中打印.00金额,如果我从该金额中删除了$,则会打印1.00。我在Gmail中测试了它。以前有人遇到过这个吗?

即使我尝试使用$但是没有工作。任何人都可以告诉我我错过了什么或为什么它不起作用?

1 个答案:

答案 0 :(得分:7)

你需要逃脱美元符号:

$paid_amount = '\$1.00';

这是因为preg_replace()正在使用 replace 参数中的$来解决捕获组的内容。

示例:

$string = ">> hello <<";
$pattern = "/>> ([^ ]*) <</";

echo preg_replace($pattern, '$1', $string);

在上面的示例中,$1解决了第一个捕获组的内容:([^ ]*) - &gt; &#34;你好&#34;