Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 带逗号的正则表达式预匹配问题_Php_Regex_Preg Match_Preg Match All - Fatal编程技术网

Php 带逗号的正则表达式预匹配问题

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 谢谢你的帮助(将点改为逗号没有帮助,有一个“逃避”的事情我不明白 理想情况下,我需要预先匹配任何数字,这些数字看起来像

这是我的代码,当一个金额看起来像这样:$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