Sonderzeichen filtern
Reguläre Ausdrücke | letzte Änderung am 12. April '10 um 17:49 Uhr
Problemstellung
Für ein Benutzerverwaltungssystem haben wir ein Registrierungsscript geschrieben. Da wir suchmaschinenfreundliche Urls erzeugen möchten, müssen wir sicherstellen, dass bestimmte Sonderzeichen nicht für den Username verwendet werden dürfen.
user/username
Vorbereitung
Als erstes müssen wir überlegen, welche Zeichen wir zulassen und welche wir aussschließen möchten. Folgende Zeichen möchten wir zulassen:
- Buchstaben von a-z (Groß- und Kleinbuchstaben)
- Zahlen von 0-9
- Ein paar wenige Sonderzeichen: Den Unterstrich (_) und den Bindestrich (-)
Ausschließen wollen wir alle übrigen Sonderzeichen und deutschen Umlaute wie ä, ö, ü und ß.
Nun können wir uns noch überlegen, wonach unser Ausdruck suchen soll. Wir können ihn entweder nach den Zeichen suchen lassen, die wir erlauben möchten oder wir lassen den String nach Sonderzeichen und Umlauten überprüfen.
Da man mit regulären Ausdrücken ganz wunderbar über die Zeichenklasse
[a-z]
nach allen Buchstaben des Alphabets suchen kann, entscheiden wir uns natürlich gegen den Negativausdruck, für den wir sämtliche Sonderzeichen aufzählen müssten, die wir ausschließen wollen.
Der fertige Ausdruck
<?php
if (preg_match('/^[a-z0-9_\-]+$/i', $string)) {
echo 'Der String ist valide.';
}
else {
echo 'Der String enthält ungültige Zeichen.';
}
?>
mk | verfasst am 25. Oktober '11 um 20:17 Uhr
#1
Genial.