Position actuelle: Accueil> Derniers articles> Comment vérifier l'exactitude du format de nom de domaine via des expressions régulières et des fonctions de contrôle?

Comment vérifier l'exactitude du format de nom de domaine via des expressions régulières et des fonctions de contrôle?

gitbox 2025-08-25

Comment vérifier l'exactitude du format de nom de domaine via des expressions régulières et des fonctions de contrôle?

En PHP, il est une exigence commune de vérifier qu'un nom de domaine répond au format correct. Habituellement, nous pouvons vérifier de deux manières: l'une consiste à utiliser des expressions régulières pour la vérification du format, et l'autre consiste à vérifier si le nom de domaine existe via la fonction CheckDNSRR intégrée de PHP. Cet article explorera ces deux méthodes en profondeur et présentera comment les combiner pour obtenir une vérification efficace des noms de domaine.

1. Vérifiez le format de nom de domaine en utilisant des expressions régulières

Les expressions régulières sont un outil puissant qui vérifie rapidement que les chaînes sont conformes aux modèles spécifiés. Lors de la vérification du format de nom de domaine, nous devons considérer les éléments clés suivants:

  • Un nom de domaine se compose de lettres, de chiffres, de lignes et de points horizontaux courts ( . ).

  • Chaque étiquette (partiellement séparée par points) doit contenir au moins une lettre ou un numéro et ne peut pas démarrer ou se terminer par une courte ligne horizontale.

  • La longueur totale ne doit pas dépasser 253 caractères.

Voici un exemple d'expression régulière pour vérifier le format de nom de domaine:

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">validate_domain_format</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$domain</span></span></span><span>) {
    </span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/^(?!-)[A-Za-z0-9-]{1,63}(?&lt;!-)\.(?!-)[A-Za-z0-9-]{1,63}(?&lt;!-)$/'</span></span><span>;
    
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$domain</span></span><span>);
}
</span></span>

expliquer:

  • ^ (?! -) : Assurez-vous que le nom de domaine ne commence pas par une ligne horizontale courte ( - ).

  • [A-ZA-Z0-9 -] {1,63} : Chaque partie du nom de domaine (étiquette) peut contenir des lettres, des nombres et des lignes horizontales courtes, avec une longueur de 1 à 63 caractères.

  • (? <! -) : Assurez-vous que le nom de domaine ne se termine pas par une ligne horizontale courte ( - ).

  • \. : Match Point ( . ) Caractères.

  • Cette expression régulière assure la légalité et le formatage de chaque partie du nom de domaine.

2. Utilisez la fonction CheckDNSRR pour vérifier l'enregistrement DNS du nom de domaine

Bien que les expressions régulières puissent vérifier l'exactitude du format de nom de domaine, il ne peut pas vérifier que le nom de domaine existe réellement. Pour nous assurer que le nom de domaine est valide, nous pouvons utiliser la fonction CHECKDNSRR intégrée de PHP, qui est utilisée pour vérifier si le nom de domaine a des enregistrements DNS correspondants. S'il y a un enregistrement DNS valide, cela signifie que le nom de domaine existe et est accessible.

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">check_domain_exists</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$domain</span></span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">checkdnsrr</span></span><span>(</span><span><span class="hljs-variable">$domain</span></span><span>, </span><span><span class="hljs-string">"A"</span></span><span>); </span><span><span class="hljs-comment">// examiner A Enregistrer,Cela signifie si le nom de domaine est valide</span></span><span>
}
</span></span>

expliquer:

  • CheckDNSRR ($ Domain, "A") : Cette fonction vérifiera si le nom de domaine a un enregistrement A, c'est-à-dire s'il existe une adresse IP associée au nom de domaine. Si c'est le cas, retournez vrai , indiquant que le nom de domaine est valide.

  • Vous pouvez également utiliser le paramètre MX pour vérifier que le nom de domaine a des enregistrements d'échange de courrier ou utiliser n'importe quel paramètre pour vérifier s'il existe un type d'enregistrement DNS.

3. Utilisation combinée d'expressions régulières et de fonction de contrôle

Pour vérifier le format et l'existence du nom de domaine en même temps, nous pouvons utiliser une combinaison d'expressions régulières et de fonction de contrôle . Le code suivant montre comment effectuer cette vérification conjointe:

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">validate_domain</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$domain</span></span></span><span>) {
    </span><span><span class="hljs-comment">// Vérifiez d&#39;abord le format de nom de domaine</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">validate_domain_format</span></span><span>(</span><span><span class="hljs-variable">$domain</span></span><span>)) {
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">"Format de nom de domaine non valide"</span></span><span>;
    }

    </span><span><span class="hljs-comment">// 然后examiner域名是否存在</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">check_domain_exists</span></span><span>(</span><span><span class="hljs-variable">$domain</span></span><span>)) {
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">"Le nom de domaine n&#39;existe pas"</span></span><span>;
    }

    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">"Le nom de domaine est correct et existe"</span></span><span>;
}
</span></span>

Exemple d'utilisation:

 <span><span><span class="hljs-variable">$domain</span></span><span> = </span><span><span class="hljs-string">"example.com"</span></span><span>;

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">validate_domain</span></span><span>(</span><span><span class="hljs-variable">$domain</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>; </span><span><span class="hljs-comment">// Sortir "Le nom de domaine est correct et existe"</span></span><span>
</span></span>

4. Autres précautions

  • Nom de domaine internationalisé (IDN) : Si votre application doit prendre en charge les noms de domaine internationalisés (c'est-à-dire les noms de domaine contenant des caractères non ASCII), vous pouvez utiliser la fonction idn_to_ascii () pour la convertir en codage ASCII avant de vérifier.

  • Nom de domaine Limite de longueur : Selon la norme, la longueur totale d'un nom de domaine ne doit pas dépasser 253 caractères. Si le nom de domaine entré par l'utilisateur dépasse cette longueur, des vérifications supplémentaires sont requises.

  • Gestion des erreurs : Lorsque vous appelez la fonction CheckDNSRR , vous pouvez rencontrer des erreurs de résolution DNS, il est donc préférable d'utiliser le symbole @ pour supprimer la sortie d'erreur et gérer les erreurs en fonction de la situation réelle.

en conclusion

En combinant des expressions régulières et des fonctions de contrôle de contrôle , les développeurs PHP peuvent vérifier efficacement le format et l'existence de noms de domaine. Les expressions régulières garantissent que le format de nom de domaine répond aux normes, et la fonction CheckDNSRR vérifie en outre si le nom de domaine existe réellement. Cette méthode de vérification à deux facteurs améliore considérablement la précision et la fiabilité de la vérification du nom de domaine et peut éviter efficacement les problèmes causés par des erreurs de format ou des noms de domaine non valides.