Maison > développement back-end > tutoriel php > 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
Libérer: 2024-10-22 08:47:02
original
527 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal