SEO Welten
Buchempfehlungen
|
RegEx: Mit regulären Ausdrücken Formulareingaben prüfenEingaben auf Vollständigkeit überprüfenÜbersicht / Seite:
Ein praktisches BeispielNach der kleinen Einführung zur Syntax von regulären Ausdrücken auf der vorausgehenden Seite, folgt auf dieser Seite ein praktisches Beispiel zur Anwendung. Die in einem Formular eingegebenen Namen sollen im Beispiel auf Korrektheit überprüft werden, in dem die bei Vor- und Nachnamen übliche Syntax geprüft wird. Als Ausgangspunkt dient die nachfolgende Liste, in der ein bis Vornamen und ein bis zwei Nachnamen mal mit und mal ohne Bindestrich verbunden sind. /* Auf Grund der unterschiedlichen Anzahl von Vor- und Nachnamen, erwies sich
ein einzelner regulärer Ausdruck bzw. ein einzelnes Suchmuster als unzureichend, so dass die eingegebenen
Namen mehrmals hintereinander mit insgesamt drei Suchmustern verglichen werden, was sich wie im Beispiel
problemlos mit einer Zählschleife realisieren lässt. Ablauf der ÜberprüfungWurde durch einem Nutzer ein vollständiger Name in das entsprechende Formularfeld
eingegeben und der Sendebutton betätigt, wird der Inhalt des Formulars per GET als QueryString übermittelt.
Mit den PHP-Funktionen isset() und empty() wird überprüft, ob eine Variable mit dem Bezeichner "namen"
übermittelt wurde und einen Wert enthält. Enthält die Variable "namen" einen String als Wert,
wird von dessen Anfang und Ende eventuell vorhandener Whitespaces mit Hilfe der PHP-Funktion trim() entfernt. "/ \A([A-Z]{1})([a-zäöüß]+)\Z/"; Wer möchte, könnte hier statt des Pluszeichens mit einer Vorgabe, wie zum
Beispiel {1,20} arbeiten. Letzteres würde bedeuten, dass kleine Buchstaben mindestens 1 und höchsten 20
mal vorkommen dürfen. "/ ...(\s{1,2}|-{1}).../"; // 1 bis 2 Leerzeichen | oder 1 Bindestrich Eigentlich sollten nicht mehr als {1} Leerzeichen zwischen den Namen vorkommen,
doch da Benutzer von Formularen sich zuweilen auch mal vertippen und unbemerkt 2 statt 1 Leerzeichen eingeben,
sollte bei den Leerzeichen etwas großzügiger mit {1,2} verfahren werden. Wer möchte, der könnte ja überflüssige
Leerzeichen abschließend wieder mit der Funktion preg_replace() herausfiltern und gegen ein einzelnen Leerzeichen
austauschen. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Ein Formular für Namen</title> <meta http-equiv="Content-Type" content="text/html; charset="> <meta http-equiv="Content-Style-Type" content="text/css"> </head> <body> <?php if (isset($_GET["namen"]) and !empty($_GET["namen"])) { $derString = trim($_GET["namen"]); $muster1 = "/(\A([A-Z]{1})([a-zäöüß]+)\s{1,2}([A-Z]{1})([a-zäöüß]+)\Z)/"; $muster2 = "/(\A([A-Z]{1})([a-zäöüß]+)(\s{1,2}|-{1})([A-Z]{1})([a-zäöüß]+)(\s{1,2}|-{1})([A-Z]{1})([a-zäöüß]+)\Z)/"; $muster3 = "/(\A([A-Z]{1})([a-zäöüß]+)(\s{1,2}|-{1})([A-Z]{1})([a-zäöüß]+)\s{1,2}([A-Z]{1})([a-zäöüß]+)(\s{1,2}|-{1})([A-Z]{1})([a-zäöüß]+)\Z)/"; $i = 1; for ($i; $i <= 3; $i++) { if ($i === 1) {$dasMmuster = $muster1;} if ($i === 2) {$dasMmuster = $muster2;} if ($i === 3) {$dasMmuster = $muster3;} preg_match($dasMmuster, $derString, $gefunden); if (!empty($gefunden[0])) { echo htmlentities($gefunden[0], ENT_QUOTES)."<br>\n<br>\n"; } }} echo "\t<form name=\"beliebig\" action=\"".basename($_SERVER["PHP_SELF"])."\" method=\"get\" accept-charset=\"iso-8859-1\">\n". "\t<input type=\"text\" name=\"namen\" value=\"\" size=\"40\" maxlength=\"58\">\n". "\t<input type=\"submit\" value=\"Test\">\n". "\t</form>\n\n"; ?> </body> </html> Das bisherige Listing ist für den Zeichensatz ISO-8859-1 definiert und wurde mit einer ANSI-Kodierung abgespeichert. Soll als Zeichensatz und Kodierung hingegen UTF-8 verwendet werden, ist das Listing entsprechend anzupassen. Diese Anpassung kann gegebenenfalls durch eine eigene Funktion erfolgen, wie zum Beispiel die folgende: function UmlautIN($umlautIN){ $sucheum = array("ä","ö","ü","ß"); $ersetze = array("ä","ö","ü","ß"); $guteuml = str_replace($sucheum,$ersetze,$umlautIN); Einfacher als die Verwendung von eigenen Funktionen dürfte es hingegen in der Mehrzahl der Fälle sein, Listing als UTF-8 kodierte Dokumente abzuspeichern oder gegebenenfalls PHP-Funktionen, wie utf8-decode() zu verwenden. Einführung « Reguläre Ausdrücke » mit PHP prüfen | Suchfunktion |
Navigation
Finden und - Optimierung -
Webcoding
Übersicht Web Services Tutorials &
und vieles mehr... XML |