$quantity = filter_input(INPUT_GET, 'quantity', FILTER_SANITIZE_NUMBER_FLOAT);
输入:100.25
输出:10025
如何保留.
字符?
答案 0 :(得分:49)
试试这个......
$quantity = filter_input(
INPUT_GET,
'quantity',
FILTER_SANITIZE_NUMBER_FLOAT,
FILTER_FLAG_ALLOW_FRACTION
);
答案 1 :(得分:19)
阅读文档http://www.php.net/manual/en/filter.filters.sanitize.php表明FILTER_SANITIZE_NUMBER_FLOAT
具有以下效果:
删除除数字以外的所有字符,+ - 和可选的.eE。
将这个相当糟糕的句子转过来:
这将删除输入中除数字(0-9)以外的所有字符。使用可选标志,也可以允许字符。 (点),(逗号)e(指数)和E(指数)
因此,您的代码示例不会成倍增加,但它会剥离小数点。
<强>解决方案强>:
您需要在函数调用中设置选项FILTER_FLAG_ALLOW_FRACTION
以允许小数点:
$quantity = filter_input(INPUT_GET, 'quantity', FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
答案 2 :(得分:7)
你想:
$quantity = filter_var(100.25, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
print_r($quantity);
Woops ..你现在仍然希望使用filter_input
和前两个args一样。我最终使用filter_var
所以我可以在键盘中测试它并忘记将其更改回来:P
答案 3 :(得分:0)
或者,如果不匹配,请使用FILTER_VALIDATE_FLOAT
,并附上快速反馈说明:
$quantity = (filter_input(INPUT_GET, 'quantity', FILTER_VALIDATE_FLOAT))
?filter_input(INPUT_GET, 'quantity', FILTER_VALIDATE_FLOAT):
"Invalid Decimal Number";
print_r($quantity);