【发布时间】:2020-03-31 17:34:10
【问题描述】:
我正在使用 HTML/PHP 读取用户输入的数据,我只希望用户能够输入数字,并在表单中加上句号,如果没有抛出错误。
因为表单是动态的,用户可以添加和删除表单字段,所以我需要针对所有 POST 变量运行预匹配。 这是我的脚本:
array_walk_recursive($_POST, function ($v) {
if (preg_match('/^[a-zA-Z.\d]+$/', $v)) {
} else {
exit("Error: Special characters and spaces not allowed.");
}
});
以下是失败的 POST 示例:
variable=HomeWin&fixtures=fixtures&option[]=1&number[]=2&option[]=11&number[]=&option4[]=1&away_number[]=2
回复:
Error: Special characters and spaces not allowed.
由于空白数字变量而失败:
&number[]=
当我像这样在末尾添加一个数字时,它会起作用:
&number[]=1
完整的工作 POST 数据:
variable=HomeWin&fixtures=fixtures&option[]=1&number[]=2&option[]=11&number[]=1&option4[]=1&away_number[]=2
我怀疑它可能会失败,因为当变量为空白时,它会将 & 视为用户输入的数据。
如何修改我的正则表达式以使其接受空白变量?
【问题讨论】:
-
看起来你只是想匹配一个空字符串,对吧?然后使用
'/^[a-zA-Z\d.]*$/' -
@WiktorStribiżew 这就是我要找的东西-谢谢
标签: php regex preg-match