TLD可能会持续多久?

我正在使用PHP的电子邮件validation正则expression式,我需要知道TLD可能是多久,仍然有效。 我做了一些search,但没有find关于这个主题的很多信息。 TLD可能会持续多久?

DNS允许单个标签最多63个字符。

目前最长的TLD长度为24个字符,并且可能会更改。 RFC 1034规定的最大TLD长度是63个八位字节。

为了获得最长的现有TLD的长度:

 wget -qO - http://data.iana.org/TLD/tlds-alpha-by-domain.txt | tail -n+2 | wc -L 

以下是该命令的作用:

  1. 从IANA获取实际现有TLD的最新列表
  2. 剥去第一行,这是一个长期的评论
  3. 启动wc来计算最长的行

感谢Stefan的替代使用curl

 curl -s http://data.iana.org/TLD/tlds-alpha-by-domain.txt | tail -n+2 | wc -L 

拉丁字母最长的是.MUSEUM( 来源 ),但有一些有特殊字符。 最长的是XN – CLCHC0EA0B2G2A9GCD。 而且,在很短的时间内,将有可能为高价保留您自己的TLD,因此可能会更长。

-编辑-

根据RFC 2606,localhost是保留域名,长度是9个字符。 那是我知道的最长的。

-END OF EDIT-

不过,我认为你应该关心电子邮件地址的长度而不是TLD的长度。 以下是本文的引用。 电子邮件地址长度为254个字符:

似乎有一些混淆了最大有效的电子邮件地址大小。 大多数人认为它是320个字符(64个字符的用户名+ 255个字符的域名+ 1个字符的@符号)。 其他资料显示129(64 + 1 + 64)或384(128 + 1 + 255,假设用户名将来会增加一倍)。

这种混淆意味着您应该注意“健壮性原则”(“开发人员应仔细编写与现存的RFC密切相关的软件,但接受并parsing可能不符合这些RFC的同行的input” – 维基百科 )电子邮件地址。 此外,某些软件可能会被天真的假设所扼杀,例如,认为50个字符就足够了( 例子 )。 您的200个字符的电子邮件地址可能在技术上是有效的,但是如果大多数网站或应用程序拒绝这个邮件地址,这将不会对您有所帮助

实际的最大电子邮件长度目前是254个字符:

“ RFC 3696的原始版本确实说320是最长的,但John Klensin(ICANN)后来接受了这个错误。

“这是由一个域的最大长度(255个字符)+一个邮箱的最大长度(64个字符)+ @个字符= 320个字符的简单algorithm产生的,错误,这个鸭子实际上logging在原始版本的RFC3696中 。在RFC5321中有一个256字节的SMTP事务的path元素的限制,但是这包括电子邮件地址周围的尖括号,所以电子邮件地址的最大长度是254个字符。

这是PHP代码,以获取最新的垂直条分隔的UTF-8 TLD列表直接在正则expression式中使用:

 <?php function getTLDs($separator){ $tlds=file('http://data.iana.org/TLD/tlds-alpha-by-domain.txt'); array_shift($tlds); // remove heading comment usort($tlds,function($a,$b){ return strlen($b)-strlen($a); }); // sort from longest to shortest return implode($separator,array_map(function($e){ return idn_to_utf8(trim(strtolower($e))); },$tlds)); } echo getTLDs('|'); ?> 

你可以在这里看到它的行动。

要匹配一个主机名,你可以像这样使用它:

 $tlds=getTLDs('|'); if (preg_match("{([\da-z\.-]+)\.($tlds)}u",$address)) { .. }