PHP-TLD可能会持续多久?

我正在使用PHP开发电子邮件验证正则表达式,我需要知道TLD可能有效且仍然有效的时间。 我进行了一些搜索,但找不到关于该主题的太多信息。 那么一个TLD可能会持续多久?

DC_ asked 2019-10-02T16:52:12Z
5个解决方案
61 votes

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

tripleee answered 2019-10-02T16:52:24Z
56 votes

当前存在的最长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
Dan Dascalescu answered 2019-10-02T16:53:31Z
8 votes

-编辑-

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

-编辑结束-

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

最大有效电子邮件地址大小似乎有些混乱。 大多数人认为它是320个字符(用户名64个字符+域255个字符+ @符号1个字符)。 其他来源建议使用129(64 + 1 + 64)或384(128 + 1 + 255,假设用户名将来会加倍)。

这种混淆意味着您在编写处理“鲁棒性原则”(“开发人员应认真编写与现有RFC紧密结合但接受并解析可能与这些RFC不一致的对等方的输入”的软件时应谨慎对待)。 电子邮件地址。 此外,某些软件可能会由于幼稚的假设而受损,例如 认为50个字符就足够了(示例)。 您的200个字符的电子邮件地址在技术上可能是有效的,但是如果大多数网站或应用程序拒绝该地址,那么它对您没有帮助。

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

“ RFC 3696的原始版本确实确实说过320是最大长度,但是约翰·克兰辛(ICANN)随后接受了这是错误的。”

“这是由于域的最大长度(255个字符)+邮箱的最大长度(64个字符)+ @符号= 320个字符的简单算法而引起的。 已在勘误表中更正。RFC5321实际上对256个字符的SMTP交易的路径元素有一个限制。但这包括电子邮件地址周围的尖括号,因此电子邮件地址的最大长度为254个字符。”

aviad answered 2019-10-02T16:54:58Z
7 votes

拉丁字母最长的是.MUSEUM(源),但是有些带有特殊字符。 其中最长的是XN--CLCHC0EA0B2G2A9GCD。 同样,在短时间内,可以以高价预订自己的TLD,因此可能更长。

axiomer answered 2019-10-02T16:55:24Z
0 votes

这是PHP代码,用于获取最新的竖线分隔的UTF-8 TLD列表,可直接在正则表达式中使用:

<?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)) {
  ..
}
Meisner answered 2019-10-02T16:55:59Z
translate from https://stackoverflow.com:/questions/9238640/how-long-can-a-tld-possibly-be