Facebook
Twitter
Google+
Kommentare
0

Sprachabhängige Umlaute in Regex Validierungen

Bei der Aufgabe, aus einem Adressfeld einen Splitt von einer Postleitzahl und einem Namen einer Stadt zu vollbringen, flog mit bei Düsseldorf, München, Köln und ähnlichen, Sonderzeichen-behafteten Namen, das Ergebnis um die Ohren.

Meine Prüfung auf preg_match('/(\w\s)+$/', $sFormData['city'], $aMatchesCity); brachte also als Matching „sseldorf“, „nchen“ und „ln“ zustande. Damit war die darauf folgende Geo-Koordinaten Ermittlung mit GoogleMaps für die Tonne.

Abhilfe schafft hier ein mir vorher unbekanntes Feature der Perl Regex, welche in PHP4 (ab Version 4.4.0) und PHP5 (ab Version 5.1.0) verfügbar ist. Es gibt also das Macro \p{XXX}, wobei XXX hier für einige Parameter stehen, die ich gleich noch aufliste.

Einziges Manko an diesem Operator ist der Performance Verlust, da es im Unicode Zeichensatz natürlich wesentlich mehr Zeichen gibt, die auf diese Paramter zutreffen.

Der neue Regex sieht also wie folgt aus: preg_match('/([\p{L}\s]+)$/', $sFormData['city'], $aMatchesCity);

Über den Autor

Mario Müller

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen