0

当金额如下所示时,这是我的 pre_match 代码:$ 99.00 并且有效

if (preg_match_all('/[$]\s\d+(\.\d+)?/', $tout, $matches))
{ $tot2 = $matches[0];
$tot2 = preg_replace("/\\\$/", '', $tot2);}

我需要为看起来像这样的金额(带逗号)做同样的事情:$ 99,00

感谢您的帮助(将点换成逗号没有帮助,有一个“转义”的东西我不明白......

理想情况下,我需要 preg_match 任何看起来像带点或逗号的数字,前后有或没有美元符号(我知道,有很多问题要问:),因为在我要扫描的结果表格上有电话和街道数字...

更新(出于某种原因,我无法对回复发表评论):为了正确测试,我需要用一个点 preg_replace 逗号(因为我们正在处理总和,我认为不能对带有逗号的数字进行计算)。

所以为了澄清我的问题,我应该说:我需要转换,比如说“$ 200,24”到“200.24”。(可以是 0.10 到 1000.99 之间的数量):

    $tot2 = preg_replace("/\\\$/", '', $tot2);}

(此代码仅处理 $(它有效),我需要适应以处理 (,) 对 (.) 的更改)

4

3 回答 3

2

不,使用,代替\.作品非常好。

只是您的输入$ 99,00不像您的.-using 源那样包含美元符号和金额之间的空格。

使\s可选。

于 2013-10-21T02:16:18.803 回答
0

How about:

$str='$ 200,24';
echo str_replace(array('$',',',' '), array('','.',''), $str);

output:

200.24
于 2013-10-21T08:22:25.140 回答
-1

更换 。具有字符类 [,.] 的字符,其中包括点 (.) 和逗号 (,)

'/[$]\s\d+([.,]\d+)?/'

编辑:评论是正确的,正则表达式已修复。

于 2013-10-21T02:14:17.390 回答