reguläre Ausdrücke und Sonderzeichen

msycho

Erfahrenes Mitglied
Ich möchte in einem Eingabefeld nur Buchstaben und Zahlen zulassen, aber keine Umlaute, Sonderzeichen etc.

PHP:
preg_match("^[A-Za-z0-9]$", $eingabe)

Wenn ich jetzt aber < oder > oder Umlaute oder so eingebe, wird es trotzdem angenommen.

Hab ich einen Fehler gemacht?
 
Vom Grundsatz soll es so laufen:

PHP:
if(preg_match("^[A-Za-z0-9]$", $eingabe)) {
 ...weiter
 ...mach das
}
else {
 ...stop
 ...keine sonderzeichen und umlaute
}

Sobald was anderes bzw. auch Umlaute, Sonderzeichen etc. eingegeben werden, soll das Script "gestoppt" werden und eine Meldung rausgehen.
 
Das meine ich so, wie ich es da geschrieben habe.
Lasse Dir doch eimal den String aus "$eingabe" und
den Wahrheitswert von preg_match ausgeben,
um den Fehler zu finden.

Und folgendes solltest Du auch beachten!

Begrenzung der Suchmuster:
Die Suchmuster sind zwischen Begrenzungszeichen / / einzuschliessen.
Als Begrenzungszeichen sind mit Ausnahme von alphanumerischen Zeichen
und dem Backlash (\) alle Zeichen erlaubt. Wenn das gewählte Begrenzungszeichen
im Ausdruck selbst benötigt wird, muss mit einem vorangestellten Backslach gekennzeichnet werden.
 
So funktionierts bei mir:
PHP:
if(preg_match("/^[A-Za-z0-9]*$/", $eingabe)) {
 echo "ok";
}
else {
 echo "nicht ok";
}
Wenn es bei so nicht funktioniert, liegts wahrscheinlich an was anderem. Mach halt vorher das "echo $eingabe" um zu sehen was drin steht (evtl. leer?). Mit $_POST["eingabe"] funktionierts vielleicht schon.

Gruß
 
Zuletzt bearbeitet:
Zurück