Heim >Backend-Entwicklung >PHP-Tutorial >Wie ordne ich URLs mithilfe regulärer Ausdrücke zu?

Wie ordne ich URLs mithilfe regulärer Ausdrücke zu?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-22 08:45:03431Durchsuche

How to Match URLs Using Regular Expressions?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn