Maison >développement back-end >tutoriel php >Comment faire correspondre des URL à l'aide d'expressions régulières ?

Comment faire correspondre des URL à l'aide d'expressions régulières ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-22 08:45:03429parcourir

How to Match URLs Using Regular Expressions?

Faire correspondre des URL avec des expressions régulières

Les expressions régulières peuvent être intimidantes au début, mais elles offrent de puissantes capacités de correspondance de modèles pour divers types de données. Dans le contexte de l'extraction d'URL, un modèle flexible est nécessaire pour s'adapter aux variations de formats d'URL.

Une expression régulière robuste capable de capturer des URL avec ou sans protocoles principaux (par exemple, "http://www" ou " www") est :

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

Pour utiliser cette expression en PHP, placez-la entre guillemets doubles et transmettez-la à la fonction preg_match avec l'URL que vous souhaitez évaluer. Par exemple :

<code class="php">$url = 'www.example.com/etcetc';
if (preg_match("~^$regex$~i", $url)) {
    echo 'Matched URL without protocol';
}</code>

De même, pour les URL avec des protocoles :

<code class="php">$url = 'http://www.example.com/etcetc';
if (preg_match("~^$regex$~i", $url)) {
    echo 'Matched URL with protocol';
}</code>

Ce modèle doit couvrir un large éventail de formats d'URL tout en protégeant également contre les entrées malveillantes potentielles contenant des caractères tels que " /".

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