我的PHP错误处理似乎无法正常工作,我不知道我已经找了几个小时的原因,只是无法把手指放在上面。我的HTML正确链接,PHP表单运行。 “电话”的错误处理工作得很好,因此我的preg_match一定存在问题,因为这是非工作错误之间唯一的常见问题吗?我知道这可能是非常简单的事情,而且我已经过度了,但我已经尽可能地看了。 ####注意:我已经准备好尝试其他类型的字符串和文字,并从if(!preg_match($ string_exp,!first_name)等改变我的代码,但它仍然不起作用。非常感谢任何帮助。表格应该处理这些错误并输出错误信息,但事实并非如此。
$string_exp = "/^[A-Za-z .'-]+$/";
if(preg_match($string_exp,$first_name) == 0) {
$error_message .= 'The First Name you entered does not appear to be valid.<br />';
}
if(preg_match($string_exp,$last_name) == 0) {
$error_message .= 'The Last Name you entered does not appear to be valid.<br />';
}
$food_expected = "0";
if(preg_match($food_expected,$formFood) == 0) {
$error_message .= 'Please select a Food.';
}
if(strlen($telephone) > 11) {
died($error_message); }
if(strlen($telephone) < 11 ) {
died($error_message);
}
答案 0 :(得分:0)
如果你阅读preg_match()here的PHP手册页,它有如下说法:
警告强> 此函数可能返回布尔值FALSE,但也可能返回非布尔值,其值为FALSE。有关更多信息,请阅读有关布尔值的部分。使用===运算符测试此函数的返回值。
我建议您首先使用preg_match
运算符测试===
的返回值为false:
if (preg_match($string_exp,$first_name) === false)
查看正则表达式是否存在问题。
在任何情况下,请勿在此处使用==
运算符。
在您的问题的未经编辑的版本中,如果电话号码长度为11个字符,那么died()
函数永远不会被$error_message
调用,即使preg_match()
也是如此返回0。