php - 如何在 PHP 中过滤小数输入并对其进行清理

标签 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);

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

最佳答案

您可以为此使用正则表达式,例如:

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

关于php - 如何在 PHP 中过滤小数输入并对其进行清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35002051/

相关文章:

input - 期望重定向标准输入

javascript - 如何在创建文本框时动态创建 id?

ruby - 在对它进行立方根然后重新立方后,我可以保持大量的准确性吗?

c# - 使用 .ToString() 在 C# 中格式化十进制字符串

php - SimpleXML 奇怪的类型转换行为

php - 检查空数组 : count vs empty

PHP多行表单,自动化MySQL输入

java - 十进制转换错误

php - 使用 CodeIgniter 的 MySQL 查询问题

php - Mysql 在没有 mysql_connect 的情况下通过 PHP 使用临时表