为什么“FILTER_VALIDATE_NUMBER_FLOAT”常量会删除小数位字符?
2022-08-30 13:52:10
$quantity = filter_input(INPUT_GET, 'quantity', FILTER_SANITIZE_NUMBER_FLOAT);
输入:100.25
输出:10025
如何保留角色?.
$quantity = filter_input(INPUT_GET, 'quantity', FILTER_SANITIZE_NUMBER_FLOAT);
输入:100.25
输出:10025
如何保留角色?.
试试这个...
$quantity = filter_input(
INPUT_GET,
'quantity',
FILTER_SANITIZE_NUMBER_FLOAT,
FILTER_FLAG_ALLOW_FRACTION
);
密码键盘。
阅读文档 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);