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!