PHP电子邮件验证

这个问题在这里已经有了答案:

  • 如何使用正则表达式验证电子邮件地址? 74个答案

  • 我建议你使用FILTER_VALIDATE_EMAIL过滤器:

    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
        //valid
    }
    

    你也可以直接使用它的正则表达式:

    "/^(?!(?:(?:x22?x5C[x00-x7E]x22?)|(?:x22?[^x5Cx22]x22?)){255,})(?!(?:(?:x22?x5C[x00-x7E]x22?)|(?:x22?[^x5Cx22]x22?)){65,}@)(?:(?:[x21x23-x27x2Ax2Bx2Dx2F-x39x3Dx3Fx5E-x7E]+)|(?:x22(?:[x01-x08x0Bx0Cx0E-x1Fx21x23-x5Bx5D-x7F]|(?:x5C[x00-x7F]))*x22))(?:.(?:(?:[x21x23-x27x2Ax2Bx2Dx2F-x39x3Dx3Fx5E-x7E]+)|(?:x22(?:[x01-x08x0Bx0Cx0E-x1Fx21x23-x5Bx5D-x7F]|(?:x5C[x00-x7F]))*x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))]))$/iD"
    

    但在这种情况下,如果在正则表达式中发现错误,则必须更新程序,而不是仅更新PHP。


    除非你想使用非常长的正则表达式,否则你会遇到没有被覆盖的有效电子邮件地址(认为是Unicode)。 伪造的电子邮件地址也会通过有效的验证,那么,如果您只需编写test@test.com并放弃它,那么验证点又有什么意义呢?

    验证电子邮件地址的最佳方法是发送带有链接的确认电子邮件以进行点击。 这只有在电子邮件地址有效时才有效:简单,并且不需要使用正则表达式。


    function check_email($check) {
    $expression = "/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+.([a-zA-Z]{2,4})$/";
    if (preg_match($expression, $check)) {
        return true;
    } else {
        return false;
    } 
    }
    

    在if()条件中调用它,如下例所示:

    if(!check_email($_REQUEST['ContactEmail'])){
      $register_error ="Enter the correct email address!<br />";
      $reg_error=1; 
    }
    
    链接地址: http://www.djcxy.com/p/16557.html

    上一篇: PHP email validation

    下一篇: Valid email address regular expression?