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+!*(),;?&=$_.-]+(:[a-z0-9+!*(),;?&=$_.-]+)?@)?"; // 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+&$_.-][a-z0-9;:@&%=+/$_.-]*)?"; // GET Query (Optional) $regex .= "(#[a-z_.-][a-z0-9+$%_.-]*)?"; // Anchor (Optional)</code>
Explication :
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!