web-dev-qa-db-fra.com

Combien de temps peut durer un TLD?

Je travaille sur une expression rationnelle de validation des e-mails en PHP et j'ai besoin de savoir combien de temps le TLD pourrait être et être encore valide. J'ai fait quelques recherches mais je n'ai pas trouvé beaucoup d'informations sur Alors, combien de temps peut durer un TLD?

68
DC_

Le TLD le plus long qui existe actuellement comporte 24 caractères et est susceptible de changer. La longueur TLD maximale spécifiée par RFC 1034 est de 63 octets.

Pour obtenir la longueur du TLD existant le plus long:

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

Voici ce que fait cette commande:

  1. Obtenez la dernière liste des TLD existants auprès de IANA
  2. Supprimer la première ligne, qui est un commentaire de longue haleine
  3. Lancer wc pour compter la plus longue ligne

Alternative utilisant curl grâce à Stefan:

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

-MODIFIER-

Selon RFC 2606 .localhost est un nom de domaine réservé et sa longueur est de 9 caractères. C'est la plus longue que je connaisse.

-FIN DE MODIFICATION-

Cependant, je pense que vous devez vous soucier de la longueur de l'adresse e-mail et pas seulement de la longueur du TLD. Ci-dessous est une citation de this article. La longueur de l'adresse e-mail est de 254 caractères:

Il semble y avoir une certaine confusion sur la taille maximale de l'adresse e-mail valide. La plupart des gens pensent qu'il s'agit de 320 caractères (64 caractères pour le nom d'utilisateur + 255 caractères pour le domaine + 1 caractère pour le symbole @). D'autres sources suggèrent 129 (64 + 1 + 64) ou 384 (128 + 1 + 255, en supposant que le nom d'utilisateur doublera de longueur à l'avenir).

Cette confusion signifie que vous devez tenir compte du "principe de robustesse" ("les développeurs doivent soigneusement écrire des logiciels qui adhèrent étroitement aux RFC existants mais accepter et analyser les entrées de leurs pairs qui pourraient ne pas être cohérentes avec ces RFC." - Wikipedia ) lors de l'écriture d'un logiciel traitant des adresses e-mail. En outre, certains logiciels peuvent être paralysés par des hypothèses naïves, par exemple penser que 50 caractères est suffisant ( exemples ). Votre adresse e-mail de 200 caractères peut être techniquement valide, mais cela ne vous aidera pas si la plupart des sites Web ou des applications la rejettent.

La longueur maximale réelle des e-mails est actuellement de 254 caractères:

"La version originale de RFC 3696 a bien dit que 320 était la longueur maximale, mais John Klensin (ICANN) a par la suite admis que c'était faux."

"Cela résulte de l'arithmétique simple de la longueur maximale d'un domaine (255 caractères) + de la longueur maximale d'une boîte aux lettres (64 caractères) + du symbole @ = 320 caractères. Faux. Ce canard est en fait documenté dans la version originale de RFC3696 . Il a été corrigé dans l'errata. Il y a en fait une restriction de RFC5321 sur l'élément de chemin d'une transaction SMTP de 256 caractères. Mais cela inclut des crochets inclinés autour de l'adresse e-mail, donc le la longueur maximale d'une adresse e-mail est de 254 caractères. "

8
aviad

Le plus long avec des lettres latines est .MUSEUM ( source ), mais il y en a avec des caractères spéciaux. Le plus long d'entre eux est XN - CLCHC0EA0B2G2A9GCD. De plus, en peu de temps, il sera possible de réserver votre propre TLD à un prix élevé et il sera donc possible d'être plus long.

7
axiomer

Il s'agit du code PHP pour séparer la barre verticale à jour UTF-8 Liste des TLD à utiliser directement dans une expression régulière:

<?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('|');
?>

Vous pouvez le voir en action ici .

Pour faire correspondre un nom d'hôte, vous pouvez l'utiliser comme ceci:

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

Étant donné que je suis un développeur .net, voici la représentation du script Java permettant de déterminer le TLD le plus long actuellement disponible. Cela renverra la longueur du TLD le plus long que vous seriez en mesure d'utiliser dans votre RegEx.

veuillez essayer l'extrait de code suivant

function getTLD() {
    var length = 0;
    var longest;
    var request = new XMLHttpRequest();

    request.open('GET', 'http://data.iana.org/TLD/tlds-alpha-by-domain.txt', true);
    request.send(null);
    request.onreadystatechange = function () {
        if (request.readyState === 4 && request.status === 200) {
            var type = request.getResponseHeader('Content-Type');
            if (type.indexOf("text") !== 1) {
                var tldArr = request.responseText.split('\n'); 
                tldArr.splice(0, 1);

                for (var i = 0; i < tldArr.length; i++) {
                    if (tldArr[i].length > length) {
                        length = tldArr[i].length;
                        longest = tldArr[i];
                    }
                } 

                console.log("Longest >> " + longest + " >> " + length);
                return length;
            }
        }
    }
}
<button onclick="getTLD()">Get TLD</button>
0