使用php

时间:2016-07-26 11:42:14

标签: php regex preg-replace

在php电子商务实施中,我的购物车价格为$ 20.00或$ 0.00(如果是空车)。要过滤此字符串中的数字,我正在使用以下

// $ total可能是“$ 20.00”或“$ 0.00”或“$ 10,000.00”等

$total = "$20.00";

return floatval( preg_replace( '/[^0-9,.]/', '',  $total) );

当其值大于0但在空车推车中失败时,它的作用。总是返回360的奇怪值!

预期输出如下,

Input       Output

$20.00      20

$0.00       0

$10,000.00  10000

2 个答案:

答案 0 :(得分:1)

使用单个preg_replace调用

preg_replace( '/\..*|[^0-9]/', '',  $total)

DEMO

答案 1 :(得分:1)

由于这是货币,我建议您使用适当的工具,即NumberFormatter

示例:

$fmt = new NumberFormatter("en_US",NumberFormatter::CURRENCY);
$fmt->parse("$10,123,234.23"); //Returns 10123234.23
$fmt->parse("$0.00"); //Returns 0

如果您愿意,这也具有允许未来国际化的优势。但是,这确实需要安装Internationalization Functions扩展名。