我正在使用HTML / PHP来读取用户输入的数据,我只希望用户能够输入数字,并且对表单进行句号处理,如果没有抛出错误。
由于表单是动态的,用户可以添加和删除表单字段,因此我需要针对所有POST变量运行pregmatch。 这是我的脚本:
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
我怀疑它可能会失败,因为当变量为空时,它将&视为用户输入的数据。
我如何修改我的正则表达式,使其接受空白变量?
答案 0 :(得分:1)
/^[a-zA-Z.\d]+$
平均匹配1个或更多。您想要的是0或更多
如下
/^[a-zA-Z.\d]*$