wake-up-neo.com

URL in überprüfen PHP

Mögliches Duplizieren:
PHP Validierung/Regex für URL

Gibt es eine einfache, sichere und schnelle Möglichkeit, zu überprüfen, ob eine URL in PHP gültig ist?

22

Ja da ist! Verwenden Sie filter_var :

if (filter_var($url, FILTER_VALIDATE_URL) !== false) ...

FILTER_VALIDATE_URL validiert URLs gemäß RFC 2396 .

54
Dan Grossman

Wenn wir uns RFC 3986 anschauen, können wir die Definition einer URL finden.

Wenn Sie sich Anhang B ansehen, finden Sie eine Anleitung zur Verwendung regulärer Ausdrücke zum Analysieren einer URL:

Anhang B. Analysieren einer URI-Referenz mit einem regulären Ausdruck

Da der "first-match-wins" -Algorithmus mit dem "gierigen" Algorithmus identisch ist
Disambiguation-Methode, die von regulären POSIX-Ausdrücken verwendet wird
natürlich und alltäglich, um einen regulären Ausdruck für das Parsen des
mögliche fünf Komponenten einer URI-Referenz.

Die folgende Zeile ist der reguläre Ausdruck für die Aufgliederung von a
wohlgeformte URI-Referenz in ihre Komponenten.

  ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
   12            3  4          5       6  7        8 9

Die Zahlen in der zweiten Zeile dienen nur zur Unterstützung Lesbarkeit; Sie geben die Bezugspunkte für jedes .__ an. Unterausdruck (d. h. jede gepaarte Klammer). Wir verweisen auf das Wert für Unterausdruck als $ angepasst. Zum Beispiel übereinstimmende den obigen Ausdruck zu

  http://www.ics.uci.edu/pub/ietf/uri/#Related

führt zu folgenden Teilausdrücken:

  $1 = http:
  $2 = http
  $3 = //www.ics.uci.edu
  $4 = www.ics.uci.edu
  $5 = /pub/ietf/uri/
  $6 = <undefined>
  $7 = <undefined>
  $8 = #Related
  $9 = Related

dabei gibt an, dass die Komponente nicht vorhanden ist, wie ist im obigen Beispiel für die Abfragekomponente der Fall. Daher können wir den Wert der fünf Komponenten als bestimmen

  scheme    = $2
  authority = $4
  path      = $5
  query     = $7
  fragment  = $9

In umgekehrter Richtung können wir eine URI-Referenz neu erstellen von seinen Komponenten mit dem Algorithmus aus Abschnitt 5.3.

Sie können diesen regulären Ausdruck verwenden, um die URL manuell zu analysieren oder die eingebaute parse_url-Funktion verfügbar in PHP 4 und 5

14
Devin M

Es hängt von Ihrer Definition von gültig ab. Semantisch gültig, Auflösung von Domainnamen usw. 

Der schnelle Ansatz wäre, Preg_match zu verwenden, um die URL mit einem guten regulären Ausdruck zu testen, um zu überprüfen, ob das richtige Format vorliegt. Es scheint einige gute Beispiele in diesem Thread zu geben PHP validation/regex für URL

0
Code Magician