Php 带逗号的正则表达式预匹配问题
这是我的代码,当一个金额看起来像这样:$99.00时,它会起作用Php 带逗号的正则表达式预匹配问题,php,regex,preg-match,preg-match-all,Php,Regex,Preg Match,Preg Match All,这是我的代码,当一个金额看起来像这样:$99.00时,它会起作用 if (preg_match_all('/[$]\s\d+(\.\d+)?/', $tout, $matches)) { $tot2 = $matches[0]; $tot2 = preg_replace("/\\\$/", '', $tot2);} 我需要做同样的事情,金额看起来像这样(用逗号):$99,00 谢谢你的帮助(将点改为逗号没有帮助,有一个“逃避”的事情我不明白 理想情况下,我需要预先匹配任何数字,这些数字看起来像
if (preg_match_all('/[$]\s\d+(\.\d+)?/', $tout, $matches))
{ $tot2 = $matches[0];
$tot2 = preg_replace("/\\\$/", '', $tot2);}
我需要做同样的事情,金额看起来像这样(用逗号):$99,00
谢谢你的帮助(将点改为逗号没有帮助,有一个“逃避”的事情我不明白
理想情况下,我需要预先匹配任何数字,这些数字看起来像是一个带点或逗号的数字,前后有或没有美元符号(我知道,这有很多问题:),因为我想扫描的结果表上有电话和街道号码
更新(出于某些原因,我无法对回复进行评论):为了正确测试,我需要用点替换逗号(因为我们处理的是总和,我认为不能对带有逗号的数字进行计算)
因此,为了澄清我的问题,我应该说:我需要转换,比如说“$200,24”到“200.24”。(可以是介于0.10到1000.99之间的金额):
(这段代码只处理$(它可以工作),我还需要修改以处理(,)for(.)的变化。将.character替换为一个字符类[,.],该类包括点(.)和逗号(,)
编辑:注释正确,正则表达式已修复。否,使用
,
代替\。
效果非常好
只是您的输入不像您的
-使用源代码那样在美元符号和金额$99,00
之间包含空格
将\s
设置为可选。如何:
$str='$ 200,24';
echo str_replace(array('$',',',' '), array('','.',''), $str);
输出:
200.24
在字符类中不需要转义点。
$str='$ 200,24';
echo str_replace(array('$',',',' '), array('','.',''), $str);
200.24