如何在PHP中过滤十进制输入并清理它

时间:2016-01-25 20:47:45

标签: php input decimal user-input

我想过滤用户输入的十进制值,我想要允许逗号和点数。

我正在使用以下代码来完成它:

$user_input = round(filter_input(INPUT_POST, 'test', FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION|FILTER_FLAG_ALLOW_THOUSAND),2);

如果我用点输入十进制值,第一个过滤器一切正常,但如果我用逗号输入一个十进制值,该函数也会删除逗号和小数部分。 有人能帮助我吗?感谢

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式,如下所示:

preg_match_all('/^(\d+(?:[\.\,]\d{1,})?)$/', $input, $output);

在$ output变量中,您将获得结果。如果输出不正确,你只需要一个空数组。

要了解preg_match_all方法的工作原理,请访问: http://php.net/manual/es/function.preg-match-all.php

要了解有关正则表达式的更多信息,请访问: http://php.net/manual/es/reference.pcre.pattern.syntax.php