$quantity = filter_input(INPUT_GET, 'quantity', FILTER_SANITIZE_NUMBER_FLOAT);
Run Code Online (Sandbox Code Playgroud)
输入: 100.25
输出: 10025
我该如何保留.角色?
ale*_*lex 49
试试这个...
$quantity = filter_input(
INPUT_GET,
'quantity',
FILTER_SANITIZE_NUMBER_FLOAT,
FILTER_FLAG_ALLOW_FRACTION
);
Run Code Online (Sandbox Code Playgroud)
Hor*_*Kol 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);
Run Code Online (Sandbox Code Playgroud)
你要:
$quantity = filter_var(100.25, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
print_r($quantity);
Run Code Online (Sandbox Code Playgroud)
Woops ..你仍然希望仍然使用filter_input你现在拥有的以及相同的前两个args.我最终使用,filter_var所以我可以在键盘中测试它,忘了改回来:P