Heim >Backend-Entwicklung >PHP-Tutorial >Wie ordne ich URLs mithilfe regulärer Ausdrücke zu?
URLs mit regulären Ausdrücken abgleichen
Reguläre Ausdrücke können anfangs entmutigend 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:
<code class="php">$url = 'www.example.com/etcetc'; if (preg_match("~^$regex$~i", $url)) { echo 'Matched URL without protocol'; }</code>
Ähnlich gilt für URLs mit Protokollen:
<code class="php">$url = 'http://www.example.com/etcetc'; if (preg_match("~^$regex$~i", $url)) { echo 'Matched URL with protocol'; }</code>
Dieses Muster sollte ein breites Spektrum an URL-Formaten abdecken und gleichzeitig vor potenziell böswilligen Eingaben schützen, die Zeichen wie „ /".
Das obige ist der detaillierte Inhalt vonWie ordne ich URLs mithilfe regulärer Ausdrücke zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!