Php Preg_replace在replace选项中给出货币字符串时给出不正确的结果
Php Preg_replace在replace选项中给出货币字符串时给出不正确的结果,php,regex,preg-replace,currency,Php,Regex,Preg Replace,Currency,Preg\u replace在replace选项中提供了($1500)等货币字符串时,会给出不正确的结果 这是我的密码 <?php $amount = '$1,500.00'; echo $amount. "<br />"; echo preg_replace('/{amount_val}/', $amount, '{amount_val}'); // it gives ",500" but i need "$1,500" ?> 如何获得准确的结果,即1500.00美
Preg\u replace
在replace选项中提供了($1500)等货币字符串时,会给出不正确的结果
这是我的密码
<?php
$amount = '$1,500.00';
echo $amount. "<br />";
echo preg_replace('/{amount_val}/', $amount, '{amount_val}'); // it gives ",500" but i need "$1,500"
?>
如何获得准确的结果,即1500.00美元
请帮我修一下这个
提前感谢只需避开美元符号,请参见:
或者(这真的是你想要的吗?)
只需将美元符号转义,请参见:
或者(这真的是你想要的吗?)
由于要替换文字字符串,因此不需要使用正则表达式:
$amount = '$1,500.00';
$result = str_replace('{amount_val}', $amount, $yourstring);
现在,为什么用preg\u replace
得到一个奇怪的结果
在替换字符串中,每个序列
$n
,其中n是数字或&
,被视为对捕获组的引用,并且是该组中捕获的字符的占位符。这就是为什么,为了避免歧义,您应该转义$
字符,以确保获得文本$
,因为您要替换文本字符串,所以不需要使用正则表达式:
$amount = '$1,500.00';
$result = str_replace('{amount_val}', $amount, $yourstring);
现在,为什么用preg\u replace
得到一个奇怪的结果
在替换字符串中,每个序列
$n
,其中n是数字或&
,被视为对捕获组的引用,并且是该组中捕获的字符的占位符。这就是为什么,为了避免歧义,您应该转义$
字符,以确保获得文本$
使用$amount='\$1500.00'
即escape
在1
之前的$
。是的,我知道了,但是我怎么能添加“\”,preg\u quote同时添加了$和,即preg\u quote
这样给“\$1500\.00”我怎么能只转义“$”,像preg\u quote
escaping这样的函数呢too@noob:对不起,在我发布答案时看到你的评论太晚了。使用$amount='\$1500.00'
即escape
在1
之前的$
。是的,我知道了,但是我怎么能添加“\”,preg\u quote同时添加了$和,即preg\u quote
这样给“\$1500\.00”我怎么能只转义“$”,像preg\u quote
escaping这样的函数呢too@noob:对不起,在我发布答案时看到你的评论太晚了。我怎么能只转义“$”,像preg_quote
escaping这样的函数呢too@Anilkumar:$amount=str\u replace(“$”、“\$”、$amount)代码>取决于您的需要。您能否建议使用preg_replace
@Anilkumar解决方案:您的问题不仅仅是$1500
?如果是,在这种情况下,您可以使用正则表达式转义特殊字符,然后将该字符串传递给当前代码。如何仅转义“$”,如preg\u quote
escaping.”too@Anilkumar:$amount=str\u replace(“$”、“\$”、$amount)代码>取决于您的需要。您能否建议使用preg_replace
@Anilkumar解决方案:您的问题不仅仅是$1500
?如果是,在这种情况下,您可以使用正则表达式转义特殊字符,然后将该字符串传递给当前代码。您是否可以使用preg\u replace
建议解决方案
<?php
$amount = '$1,500.00';
echo preg_replace('~{amount_val}~', str_replace('$', '\$', $amount), '{amount_val}');
?>
$amount = '$1,500.00';
$result = str_replace('{amount_val}', $amount, $yourstring);