Nach dem Absenden eines Formulars sollten auch die Angaben überprüft werden.
Einfach zu prüfen sind Namen und andere Strings, z.B. auf die Länge des Strings
Funktion strlen hilft dabei (http://php.net/strlen)
Wie prüfe ich jedoch eine URL auf korrekte Syntax?
Lösung:
Hierbei kommt ein regulärer Ausdruck zum Tragen, die php-Funktion preg_match() übernimmt die Wahrheitsprüfung:
preg_match("
Wir starten den regulären Ausdruck
!
Am Beginn (^) sollte das Protokoll stehen, es gibt zwei Alternativen, http und das gesicherte https, einmal ist Pflicht(Quantifier +):
^(http|https)+
Danach folgen der Doppelpunkt und zwei Slashes, einmal ist Pflicht(Quantifier +):
(://)+
Dann eine Abfrage, ob ein www vorkommt, danach der Punkt (\.) (das ganze einmal oder keinmal, Quantifier ?):
(www\.)?
Eine Secondlevel-Domain hat mindestens 3 Zeichen und besteht aus den Buchstaben a bis z und Zahlen, sowie dem Bindestrich.
Für Subdomains wird auch der Punkt (\.) erlaubt, das ganze mit mindestens drei Zeichen (Quantifier {3,}):
([a-z0-9\.-]{3,})
enthält als Trenner zu Top-Level-Domain einen Punkt
\.
die Top-Level-Domain selbst setzt sich aus 2 bis 4 Zeichen (Buchstaben a bis z) zusammen
[a-z]{2,4}
es folgt noch ein oder kein Schrägstrich
(/)?
Danach ist Schluß
$
Ende des regulären Ausdrucks
!
Das "i" nach der Suchmuster-Begrenzung kennzeichnet eine Suche ohne Berücksichtigung von Groß- und Kleinschreibung
i
Nach dem Komma kommt der Wert, der überprüft werden soll:
",$url)
So sieht der komplette reguläre Ausdruck aus:
!^(http|https)+(://)+(www\.)?([a-z0-9\.-]{3,})\.[a-z]{2,4}(/)?$!i
Und so sieht die Abfrage im Zusammenhang aus, wenn die URL $url überprüft werden soll:
if (
preg_match("!^(http|https)+(://)+(www\.)?([a-z0-9\.-]{3,})\.[a-z]{2,4}(/)?$!i",$url))
{
return true;
}
else
{
return false;
}
Ein nützliches Tool zum Überprüfen regulärer Ausdrücke ist "The Regex Coach", erhältlich für Windows und Unix-basierte Betriebssysteme.
Bookmarks:
Delicious Facebook Google Yahoo Mr. Wong Linkarena Digg