我已经构建了自定义电子邮件模板。并使用{#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中测试了它。以前有人遇到过这个吗?
即使我尝试使用$
但是没有工作。任何人都可以告诉我我错过了什么或为什么它不起作用?
答案 0 :(得分:7)
你需要逃脱美元符号:
$paid_amount = '\$1.00';
这是因为preg_replace()
正在使用 replace 参数中的$
来解决捕获组的内容。
示例:
$string = ">> hello <<";
$pattern = "/>> ([^ ]*) <</";
echo preg_replace($pattern, '$1', $string);
在上面的示例中,$1
解决了第一个捕获组的内容:([^ ]*)
- &gt; &#34;你好&#34;