HalloPHP

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:

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.';
}
?>

Antworten

mk | verfasst am 25. Oktober '11 um 20:17 Uhr

#1

Genial.