首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PHP中验证电子邮件地址

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

Stack Overflow用户
提问于 2012-08-19 21:29:35
回答 9查看 346.2K关注 0票数 255

我有以下功能来验证电子邮件地址:

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

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

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

EN

回答 9

Stack Overflow用户

发布于 2012-08-19 21:33:15

您可以使用filter_var来实现这一点。

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

Stack Overflow用户

发布于 2017-02-04 15:03:37

在我的经验中,regex解决方案有太多的假阳性,而filter_var()解决方案有假阴性(特别是对于所有较新的TLDs)。

相反,最好确保地址包含电子邮件地址的所有必需部分(用户、"@“符号和域),然后验证域本身是否存在。

无法确定(服务器端)外部域是否存在电子邮件用户。

这是我在Utility类中创建的方法:

public static function validateEmail($email)
{
    // SET INITIAL RETURN VARIABLES

        $emailIsValid = FALSE;

    // MAKE SURE AN EMPTY STRING WASN'T PASSED

        if (!empty($email))
        {
            // GET EMAIL PARTS

                $domain = ltrim(stristr($email, '@'), '@') . '.';
                $user   = stristr($email, '@', TRUE);

            // VALIDATE EMAIL ADDRESS

                if
                (
                    !empty($user) &&
                    !empty($domain) &&
                    checkdnsrr($domain)
                )
                {$emailIsValid = TRUE;}
        }

    // RETURN RESULT

        return $emailIsValid;
}
票数 16
EN

Stack Overflow用户

发布于 2012-08-19 21:32:44

我认为你最好使用PHP内置的filters --在这个特殊的例子中:

当与FILTER_VALIDATE_EMAIL参数一起提供时,它可以返回true或false。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12026842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档