首页 > 解决方案 > 使用带有 FILTER_FLAG_ALLOW_FRACTION 的 Filter_SANITIZE_FLOAT 但仍然丢失逗号?

问题描述

我的问题是我丢失了小数符号,尽管我按照 PHP 文档使用了 sanitize float。

我考虑过使用验证而不是清理,但是哎呀......它在过去的命令实现中工作,所以我就是不明白。

我可能错过了什么?

我的错误代码片段:

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]);
}

捕获我的 var_dump

标签: php-7

解决方案


毕竟我有两个解决这个问题的方法......

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 官方网站上发布此内容,以警告其他可能遇到与我相同的问题的人...


推荐阅读