Abgleichen von URLs mit regulären Ausdrücken
Reguläre Ausdrücke können zunächst einschüchternd sein, bieten aber leistungsstarke Mustervergleichsfunktionen für verschiedene Datentypen. Im Zusammenhang mit dem Extrahieren von URLs ist ein flexibles Muster erforderlich, um Variationen in URL-Formaten Rechnung zu tragen.
Ein robuster regulärer Ausdruck, der URLs mit oder ohne führende Protokolle erfassen kann (z. B. „http://www“ oder „ www") ist:
((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
Um diesen Ausdruck in PHP zu verwenden, schließen Sie ihn in doppelte Anführungszeichen ein und übergeben Sie ihn zusammen mit der URL, die Sie auswerten möchten, an die Funktion preg_match. Zum Beispiel:
$url = 'www.example.com/etcetc';
if (preg_match("~^$regex$~i", $url)) {
echo 'Matched URL without protocol';
}
Ähnlich für URLs mit Protokollen:
$url = 'http://www.example.com/etcetc';
if (preg_match("~^$regex$~i", $url)) {
echo 'Matched URL with protocol';
}
Dieses Muster sollte ein breites Spektrum an URL-Formaten abdecken und gleichzeitig vor potenziell böswilligen Eingaben schützen, die Zeichen wie „/“ enthalten.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3