考虑以下示例......
问题在于preg_replace用于替换变量total_balance_overriden和total_balance。
$text = 'this: {{total_balance_overridden}} - that: {{total_balance}}';
$total = '$517.50';
$overiddentotal = '$390.00';
$text = preg_replace('/{{total_balance_overridden}}/', $overiddentotal, $text);
$text = preg_replace('/{{total_balance}}/', $total, $text);
echo $total;
echo $overiddentotal;
echo $text;
这给了我......
$517.50
$390.00
this: 0.00 - that: 7.50
似乎$ total和$ overiddentotal vars具有正确的输出,但是当使用preg_replace替换它们时,它们的长度已被剥离,并且缺少货币符号和前两个数字。有什么想法吗?
注意:如果我用英镑符号替换美元符号就行了!我明白了......
this: £390.00 - that: £517.50
美元符号和2个数字是某种特殊字符或变量被剥离了吗?
答案 0 :(得分:1)
美元符号是替换字符串中的特殊字符,它们通常是指从匹配中捕获的子字符串。如果你想要一个文字美元符号,你必须逃避它:
$total = '\$517.50';
$overiddentotal = '\$390.00';
另请注意,在这种情况下,根本不需要正则表达式。只需使用str_replace()
,您就不会遇到此问题。