TLD至少需要多长时间

时间:2014-06-25 08:12:51

标签: php dns filter-var

我的客户抱怨filter_var()FILTER_VALIDATE_EMAIL选项的电子邮件地址如下:

john.doe@example.c

被接受。所以我现在的问题是:TLD至少需要多长时间?我的意思是我们知道.com.org.us。但据我所知,.g.a等顶级域名不存在。

进一步的问题是:

  • 他们甚至可以存在吗?
  • 它们是否已存在于现实世界(WWW)中?
  • 有多少可能"一个字符" TLD将在WWW中存在一天吗?

3 个答案:

答案 0 :(得分:4)

为避免实施可能无法反映所有有效域名的算法,您可以使用域名上的checkdnsrr函数。

类似的东西:

$parts = explode('@', $email);
$domain = $parts[1];
if (!checkdnsrr($domain)) {
    echo 'Invalid domain';
}

答案 1 :(得分:2)

现在TLD至少有两个字母。

您可以在所有可用的TLD列表中看到这一点。

来源:http://en.wikipedia.org/wiki/List_of_Internet_top-level_domains

mishu提供的解决方案是一个很好的解决方案,所以你应该使用它!

答案 2 :(得分:2)

我会做其他事情:检查域是否已解析,以及是否有MX记录。如果不是域名无法接收电子邮件,您可以拒绝该电子邮件地址。

同时检查getmxrr()函数,不要忘记umlautdomains也称为idn或punycode域用于idn_to_ascii()。这是一个简单的示例脚本:

$parts = explode('@', $email);
if(!getmxrr(idn_to_ascii($parts[1]))) {
    echo 'Reject email address';
}