Preg_replace 在替换选项中给出货币字符串时给出不正确的结果
Preg_replace giving improper results when Currency Strings are given in Replace option
当 ($1,500) 等货币字符串在替换选项中给出时,Preg_replace
给出不正确的结果。
这是我的代码
<?php
$amount = ',500.00';
echo $amount. "<br />";
echo preg_replace('/{amount_val}/', $amount, '{amount_val}'); // it gives ",500" but i need ",500"
?>
我试过 preg_quote
,请看下面的代码片段
<?php
$amount = ',500.00';
$amount = preg_quote(',500.00');
echo $amount. "<br />";
echo preg_replace('/{amount_val}/', $amount, '{amount_val}'); // it gives ",500\.00" but i need ",500"
?>
我怎样才能得到准确的结果,即 1,500.00 美元
请帮我解决这个问题。
提前致谢
简单地转义美元符号,见a demo on ideone.com:
<?php
$amount = '$1,500.00';
echo preg_replace('~{amount_val}~', $amount, '{amount_val}');
// output: ,500
?>
或者(这真的你想要什么吗???)
<?php
$amount = ',500.00';
echo preg_replace('~{amount_val}~', str_replace('$', '$', $amount), '{amount_val}');
?>
由于要替换文字字符串,因此不需要使用正则表达式:
$amount = ',500.00';
$result = str_replace('{amount_val}', $amount, $yourstring);
现在为什么用 preg_replace
得到一个奇怪的结果?
在替换字符串中,每个序列 $n
其中 n 是一个数字或 &
,被视为对捕获组的引用,并且是该组中捕获的字符的占位符.这就是为什么,为了避免歧义,您应该转义 $
字符以确保获得文字 $
.
Preg_replace
给出不正确的结果。
这是我的代码
<?php
$amount = ',500.00';
echo $amount. "<br />";
echo preg_replace('/{amount_val}/', $amount, '{amount_val}'); // it gives ",500" but i need ",500"
?>
我试过 preg_quote
,请看下面的代码片段
<?php
$amount = ',500.00';
$amount = preg_quote(',500.00');
echo $amount. "<br />";
echo preg_replace('/{amount_val}/', $amount, '{amount_val}'); // it gives ",500\.00" but i need ",500"
?>
我怎样才能得到准确的结果,即 1,500.00 美元
请帮我解决这个问题。
提前致谢
简单地转义美元符号,见a demo on ideone.com:
<?php
$amount = '$1,500.00';
echo preg_replace('~{amount_val}~', $amount, '{amount_val}');
// output: ,500
?>
或者(这真的你想要什么吗???)
<?php
$amount = ',500.00';
echo preg_replace('~{amount_val}~', str_replace('$', '$', $amount), '{amount_val}');
?>
由于要替换文字字符串,因此不需要使用正则表达式:
$amount = ',500.00';
$result = str_replace('{amount_val}', $amount, $yourstring);
现在为什么用 preg_replace
得到一个奇怪的结果?
在替换字符串中,每个序列 $n
其中 n 是一个数字或 &
,被视为对捕获组的引用,并且是该组中捕获的字符的占位符.这就是为什么,为了避免歧义,您应该转义 $
字符以确保获得文字 $
.