如何在 PHP 中验证电子邮件地址

2022-08-30 06:07:15

我有这个函数来验证电子邮件地址:

function validateEMAIL($EMAIL) {
    $v = "/[a-zA-Z0-9_-.+]+@[a-zA-Z0-9-]+.[a-zA-Z]+/";

    return (bool)preg_match($v, $EMAIL);
}

这是否可以检查电子邮件地址是否有效?


答案 1

检查电子邮件地址格式是否正确的最简单、最安全的方法是使用 filter_var() 函数:

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // invalid emailaddress
}

此外,您还可以检查域是否定义了记录:MX

if (!checkdnsrr($domain, 'MX')) {
    // domain is not valid
}

但这仍然不能保证邮件存在。找出答案的唯一方法是发送确认邮件。


现在您已经有了简单的答案,如果您愿意学习,请随时阅读有关电子邮件地址验证的信息,或者只是使用快速答案并继续前进。没有难受的感觉。

尝试使用正则表达式验证电子邮件地址是一项“不可能”的任务。我甚至会说你制作的正则表达式是无用的。有三个关于电子邮件地址的rfc,编写一个正则表达式来捕获错误的电子邮件地址,同时没有误报是任何人都无法做到的。查看此列表,了解 PHP 函数使用的正则表达式的测试(失败和成功)。filter_var()

即使是内置的PHP功能,电子邮件客户端或服务器也无法正确使用。在大多数情况下仍然是最佳选择。filter_var

如果您想知道PHP(当前)使用哪种正则表达式模式来验证电子邮件地址,请参阅PHP源代码

如果您想了解有关电子邮件地址的更多信息,我建议您开始阅读规范,但我必须警告您,无论如何,这都不容易阅读:


答案 2

您可以使用filter_var

<?php
   function validateEmail($email) {
      return filter_var($email, FILTER_VALIDATE_EMAIL);
   }
?>

推荐