-3

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

1 回答 1

0

如果你在这里阅读 preg_match() 的 PHP 手册页,它有以下内容:

警告 此函数可能返回布尔值 FALSE,但也可能返回计算结果为 FALSE 的非布尔值。请阅读有关布尔值的部分以获取更多信息。使用 === 运算符测试此函数的返回值。

我建议您首先使用运算符测试您preg_match对 false的返回值===

if (preg_match($string_exp,$first_name) === false)

找出您的正则表达式是否有问题。

无论如何,不​​要在==这里使用运算符。

话虽如此,在您的问题的未经编辑的版本中,如果电话号码的长度为 11 个字符,则即使返回 0 ,该died()函数也永远不会被调用。$error_messagepreg_match()

于 2013-10-23T09:25:25.857 回答