我的问题是我丢失了小数符号,尽管我按照PHP文档使用了sanitize浮点。
我曾经考虑过使用validate而不是sanitize,但是见鬼...它在过去的命令实现中是有效的,所以我就是不明白。
我可能遗漏了什么?
我的错误代码片段:
if (is_numeric($value) && !empty($value) && !is_null($value)){
$temp[$key] = filter_var($value,FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
var_dump($value, $temp[$key]);
}
发布于 2018-06-09 08:07:49
我对这个问题有两个解决方案……
1-使用区域设置...我发现我的项目经理要求本地设置如下: setlocale(LC_ALL,'fr_CA.utf-8');所以它确认逗号是十进制字符。我怀疑PHP在这种情况下不适用,如果我的本地更改了小数符号,PHP仍将使用'filter_var(‘查找句号。
2- filter_var($value,FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND );它允许逗号和句号,所以它可以解决这个问题……
我将在PHP官方网站上发布这篇文章,以警告其他可能遇到与我相同的问题的人……
https://stackoverflow.com/questions/50769678
复制相似问题