我们说我有一个表格,我要求产品的价格。基本上,我不会考虑用户添加数千个逗号的情况,即:1,000.00或1,000,000.00
我只考虑用户输入1000.00或1000,00或1000000.00但从不输入1,000.00或10,000,000.00或甚至最差的输出10.000.000,00的情况
我想出了这个功能。
function getPrice($price)
{
if (is_string($price)) {
if (strpos($price, ",") !== false) {
$price = str_replace(',', '.', $price);
}
}
return (is_numeric($price)) ? floatval($price) : false;
}
你觉得这个功能安全吗?你能指出改进吗?
答案 0 :(得分:1)
除了最后一行PHP
之外,你的功能看起来还不错。
我对这种方法的主要考虑是floatval
不能正确表示float,这要归功于:float
,转换为PHP
或使用浮点变量进行算术运算。
例如,FLOAT
可以将10000.00转换为9999,99,具体取决于精度集。 (你可以在这里阅读更多相关信息ionSelect)
如果在将它们解析为getPrice
(在FLOAT
函数中)并且您需要精度之后需要这些算术计算的价格,那么我的建议是避免解析为{ {1}}和其中之一:
BC MATH
扩展名在php