繁体   English   中英

在PHP中使用preg_replace过滤器编号

[英]Filter number using preg_replace in php

在php eCommerce实现中,我的购物车总价为$ 20.00或$ 0.00(以防空车)。 为了从这个字符串中过滤数字我正在使用以下

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

$total = "$20.00";

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

当ther的值大于0但在空购物车检测中失败时,其工作。 始终返回一个奇怪的值360!

预期的输出如下,

Input       Output

$20.00      20

$0.00       0

$10,000.00  10000

使用单个preg_replace调用

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

演示

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

例:

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

如果您愿意,这还具有允许将来进行国际化的优势。 但是,这确实需要安装国际化功能扩展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM