PHP,验证用户是否输入了电子邮件域,而不是地址


PHP, Validate if user entered an email domain, NOT address

我一直在寻找这个答案,但我无法找到这个确切的变化。

我正在寻找以下内容进行验证:

#1)  @toysrus.com
#2)  @staples.com
#3)  @example.com

并且以下内容不验证:

#1)  staples.com
#2)  Randy@staples.com
#3)  @testcom

基本上,我想强制用户输入有效的电子邮件域,而不是电子邮件地址。 任何线索我该怎么做?

我想或者向用户询问他们的网站域名,然后只附加"@"字符,但这更令人困惑。 简单地询问用户会更容易,请输入您的公司电子邮件域名。

谢谢!

您可以使用正则表达式来匹配电子邮件域名。例如:

$pattern = "^@('w)+(('.'w+)+)$";
if (preg_match($pattern,$domain))
    echo "Domain name right"
"

^@"表示字符串应以"@"开头。(''w)+"至少匹配 1 个数字或字母。(.''w+)+" 至少匹配 1 个域名,例如".com"或".edu.cn"。"$"表示字符串的结尾。

这可以在多阶段过程中完成

$email = 'something@somedomain.com';
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // The email is a valid format so now we check the domain
    $domain = explode('@', $email);
    if(getmxrr($domain[1])) {
        // This is about as far as we can take it.
        // The email is valid and the domain has MX records
    }
}
相关文章: