Maison  >  Article  >  développement back-end  >  Comment valider les noms de domaine en PHP : avec ou sans expressions régulières ?

Comment valider les noms de domaine en PHP : avec ou sans expressions régulières ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 06:37:01900parcourir

How to Validate Domain Names in PHP: With or Without Regular Expressions?

Comment valider les noms de domaine en PHP

Lorsque vous travaillez avec des domaines, garantir leur validité devient crucial pour empêcher les activités malveillantes ou les saisies erronées. Dans cet article, nous explorerons comment valider les noms de domaine en PHP, avec et sans utiliser d'expressions régulières.

Validation sans expressions régulières

Bien que cela ne soit pas recommandé en raison de limitations potentielles, il est possible pour effectuer une validation de nom de domaine de base sans expressions régulières. Il s'agit de vérifier les critères suivants :

  • Le nom de domaine doit commencer par un caractère alphanumérique.
  • Il peut contenir des caractères alphanumériques supplémentaires ou des tirets.
  • Il doit se terminer avec un caractère alphanumérique.

Par exemple, les chaînes suivantes seraient considérées comme des domaines valides :

domain-name
abcd
example

Alors que les chaînes suivantes seraient invalides :

domaia@name
ab$%cd

Validation à l'aide d'expressions régulières

Les expressions régulières fournissent une méthode plus robuste et plus fiable pour valider les noms de domaine. Le modèle d'expression régulière suivant peut être utilisé à cette fin :

/^[a-zA-Z0-9][a-zA-Z0-9\-\_]+[a-zA-Z0-9]$/

Exemple de code

La fonction PHP suivante valide les noms de domaine à l'aide du modèle d'expression régulière fourni :

<code class="php">function is_valid_domain_name($domain_name)
{
    return (
        preg_match("/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i", $domain_name) //valid chars check
        && preg_match("/^.{1,253}$/", $domain_name) //overall length check
        && preg_match("/^[^\.]{1,63}(\.[^\.]{1,63})*$/", $domain_name) //length of each label
    );
}</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn