在 php 中使用 preg_replace 过滤数字

Filter number using preg_replace in php

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

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

$total = ".00";

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

当值大于 0 时有效,但在空购物车场景中失败。总是returns一个奇怪的值360!

预期输出如下,

Input       Output

.00      20

[=13=].00       0

,000.00  10000

使用单次preg_replace调用

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

DEMO

因为这是货币,我建议你使用合适的工具,即 NumberFormatter:

示例:

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

如果您愿意,这还有一个好处,那就是将来可以国际化。但是,这确实需要安装 Internationalization Functions 扩展。