Php 预匹配错误处理不起作用

Php 预匹配错误处理不起作用,php,error-handling,Php,Error Handling,我的php错误处理似乎不起作用,我不知道我已经寻找了几个小时的原因,只是不能把我的手指上。我的html链接正确,php表单运行正常。此外,“电话”的错误处理工作正常,因此我的preg_匹配肯定有问题,因为这是非工作错误之间唯一的共同点?我知道可能会很简单,我看得太多了,但我已经尽可能多地看了注意:我已经准备好尝试其他类型的字符串和文字,并从if(!preg_match($string_exp,!first_name)ect更改了我的代码,但仍然不起作用。非常感谢您提供的任何帮助。表单应该处理这些

我的php错误处理似乎不起作用,我不知道我已经寻找了几个小时的原因,只是不能把我的手指上。我的html链接正确,php表单运行正常。此外,“电话”的错误处理工作正常,因此我的preg_匹配肯定有问题,因为这是非工作错误之间唯一的共同点?我知道可能会很简单,我看得太多了,但我已经尽可能多地看了注意:我已经准备好尝试其他类型的字符串和文字,并从if(!preg_match($string_exp,!first_name)ect更改了我的代码,但仍然不起作用。非常感谢您提供的任何帮助。表单应该处理这些错误并输出错误消息,但它没有

    $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);
  }
$string_exp=“/^[A-Za-z.-]+$/”;
if(preg_match($string_exp,$first_name)==0){
$error_message.='您输入的名字似乎无效。
; } 如果(preg_match($string_exp,$last_name)==0){ $error_message.=“您输入的姓氏似乎无效。
”; } $food_expected=“0”; 如果(preg_匹配($food_预期,$formFood)=0){ $error_message.=“请选择食物”; } 如果(斯特伦(电话)>11){ 死亡($error_message);} if(strlen($电话)<11){ 死亡($error_message); }
如果您阅读preg_match()的PHP手册页面,它会说:

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

我建议您首先使用
=
操作符测试
preg\u match
的返回值与false:

if (preg_match($string_exp,$first_name) === false)
找出正则表达式是否有问题

在任何情况下,都不要在此处使用
=
运算符


话虽如此,在问题的未编辑版本中,如果电话号码长度为11个字符,则不会使用
$error\u消息调用
died()
函数,即使
preg\u匹配()
返回0。

您已经转储了100多行代码,您既没有解释它是如何失败的,也没有提供示例输入来重现该问题。如果您在编写正则表达式时确实遇到问题,我很确定您可以编辑该问题并用两行代码片段替换所有代码。如果您的用户键入非英语名称(例如
阿尔瓦罗
)您在
$error\u message
中写入了一些内容。该如何中止表单处理?非常感谢,非常有帮助。