preg_match错误处理无法正常工作

时间:2013-10-23 09:00:00

标签: php error-handling

我的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);
  }

1 个答案:

答案 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。