Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Preg_replace在replace选项中给出货币字符串时给出不正确的结果_Php_Regex_Preg Replace_Currency - Fatal编程技术网

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);