Preg Replace Issue是否剥离数字/字符长度?

时间:2018-01-30 19:15:34

标签: php

考虑以下示例......

问题在于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个数字是某种特殊字符或变量被剥离了吗?

1 个答案:

答案 0 :(得分:1)

美元符号是替换字符串中的特殊字符,它们通常是指从匹配中捕获的子字符串。如果你想要一个文字美元符号,你必须逃避它:

$total = '\$517.50';
$overiddentotal = '\$390.00';

另请注意,在这种情况下,根本不需要正则表达式。只需使用str_replace(),您就不会遇到此问题。