在 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)
因为这是货币,我建议你使用合适的工具,即 NumberFormatter:
示例:
$fmt = new NumberFormatter("en_US",NumberFormatter::CURRENCY);
$fmt->parse(",123,234.23"); //Returns 10123234.23
$fmt->parse("[=10=].00"); //Returns 0
如果您愿意,这还有一个好处,那就是将来可以国际化。但是,这确实需要安装 Internationalization Functions 扩展。
在 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)
因为这是货币,我建议你使用合适的工具,即 NumberFormatter:
示例:
$fmt = new NumberFormatter("en_US",NumberFormatter::CURRENCY);
$fmt->parse(",123,234.23"); //Returns 10123234.23
$fmt->parse("[=10=].00"); //Returns 0
如果您愿意,这还有一个好处,那就是将来可以国际化。但是,这确实需要安装 Internationalization Functions 扩展。