Maison  >  Article  >  développement back-end  >  Comment faire correspondre les URL avec ou sans protocole et préfixes de domaine ?

Comment faire correspondre les URL avec ou sans protocole et préfixes de domaine ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-22 08:47:02384parcourir

How to Match URLs with or Without Protocol and Domain Prefixes?

Correspondance des URL avec ou sans protocole et préfixes de domaine

Lorsque vous travaillez avec des URL, il est souvent nécessaire de les faire correspondre, qu'elles incluent ou non le Protocole HTTP/HTTPS ou préfixe de domaine « www ». Voici une description détaillée d'une expression régulière pour accomplir cela :

<code class="php">$regex = "(https?|ftp)://)?"; // SCHEME (Optional)
$regex .= "([a-z0-9+!*(),;?&amp;=$_.-]+(:[a-z0-9+!*(),;?&amp;=$_.-]+)?@)?"; // User and Pass (Optional)
$regex .= "([a-z0-9\-\.]*)\.(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.([0-9]{1,3})))"; // Host or IP address
$regex .= "((:[0-9]{2,5})?)?"; // Port (Optional)
$regex .= "(/([a-z0-9+$_%-]\.?)+)*/?"; // Path (Optional)
$regex .= "(?=[a-z+&amp;$_.-][a-z0-9;:@&amp;%=+/$_.-]*)?"; // GET Query (Optional)
$regex .= "(#[a-z_.-][a-z0-9+$%_.-]*)?"; // Anchor (Optional)</code>

Explication :

  • SCHEME (facultatif) : Correspondances "https" ou "http" au début de l'URL.
  • Utilisateur et passe (facultatif) : Correspond au nom d'utilisateur ou au mot de passe séparé par deux points.
  • Hôte ou adresse IP : Capture le nom de domaine ou l'adresse IP à l'aide d'une chaîne avec trait d'union suivie d'un point et d'un domaine de premier niveau ou d'un format d'adresse IP.
  • Port (facultatif) : Correspond à un numéro de port après le domaine.
  • Chemin (facultatif) : Capture le chemin de l'URL, qui peut inclure des répertoires et des noms de fichiers séparés par des barres obliques.
  • GET Query (Facultatif) : Correspond à tous les paramètres de requête après un point d'interrogation.
  • Anchor (Facultatif) : Capture l'identifiant du fragment après un hachage.

Pour vérifier cette expression régulière, utilisez la syntaxe suivante :

<code class="php">preg_match("~^$regex$~i", $url, $m);</code>

Cela garantit que l'URL entière correspond au modèle et inclut toutes les parties facultatives. En utilisant cette expression régulière, vous pouvez faire correspondre de manière fiable des URL dans différents formats.

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