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

时间:2013-11-17 02:35:15

标签: php validation email dns

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

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

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

以下不验证:

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

基本上,我想强制用户输入有效的电子邮件域,而不是电子邮件地址。我有什么想法可以解决这个问题吗?

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

$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
    }
}