Php Preg Replace问题是剥离编号/字符长度?

Php Preg Replace问题是剥离编号/字符长度?,php,Php,考虑下面的例子 问题在于preg_replace,它用于替换变量total_balance_Overrided和total_balance $text = 'this: {{total_balance_overridden}} - that: {{total_balance}}'; $total = '$517.50'; $overiddentotal = '$390.00'; $text = preg_replace('/{{total_balance_overridden}}/', $o

考虑下面的例子

问题在于preg_replace,它用于替换变量total_balance_Overrided和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变量的输出是正确的,但是当使用preg_replace替换它们时,它们的长度被去除,货币符号和前两个数字丢失。你知道为什么吗

注意:如果我将美元符号替换为英镑符号,它会工作!我得到

this: £390.00 - that: £517.50

那么,美元符号和2个数字是某种特殊的字符或变量吗?

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

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

另外请注意,在这种情况下,根本不需要正则表达式。只要使用,就不会有这个问题。

这里不需要正则表达式,只要$text=str_replace[{{total_balance_overrided}}}',{{{total_balance}}}',[$overiddentotal,$total],$text;$以下数字为特殊代码参考,以匹配它。谢谢,str_替换更简单!