Regulärer Ausdruck, Umlaute und/oder Brett vor dem Kopf
Julia
- php
0 Edgar Ehritt1 ChrisB0 Julia
if(preg_match("#[^-a-zA-ZüäöÄÖÜéÉèß\s]#",$name)){$_SESSION['name'] = "falsche Eingabe";}else{$_SESSION['name'] = $name;}}
Wenn ich in das Formular Müller als Name eingebe, wird das als falsche Eingabe gewertet. Müsste Müller bei dem regulären Ausdruck nicht eigentlich übernommen werden? Der http://regexp-evaluator.de/evaluator/ zeigt jedenfalls an, dass der reguläre Ausdruck _nicht_ auf Müller zutrifft, dann müsste doch die else-Verzweigung greifen? *verwirrt kopfkratz*
Vielen lieben Dank schon mal im voraus
Julia
Hallo Julia,
if(preg_match("#[^-a-zA-ZüäöÄÖÜéÉèß\s]#",$name)){$_SESSION['name'] = "falsche Eingabe";}else{$_SESSION['name'] = $name;}}
Wenn ich in das Formular Müller als Name eingebe, wird das als falsche Eingabe gewertet. Müsste Müller bei dem regulären Ausdruck nicht eigentlich übernommen werden? Der http://regexp-evaluator.de/evaluator/ zeigt jedenfalls an, dass der reguläre Ausdruck _nicht_ auf Müller zutrifft, dann müsste doch die else-Verzweigung greifen? *verwirrt kopfkratz*
das geschieht ja auch:
$name='Müller';
if(preg_match("#[^\-a-zA-ZüäöÄÖÜéÉèß\s]#",$name)){$_SESSION['name'] = "falsche Eingabe";}else{$_SESSION['name'] = $name;}
echo $_SESSION['name'];
Gruß aus Berlin!
eddi
Hi,
if(preg_match("#[^-a-zA-ZüäöÄÖÜéÉèß\s]#",$name)){$_SESSION['name'] = "falsche Eingabe";}else{$_SESSION['name'] = $name;}}
Wenn ich in das Formular Müller als Name eingebe, wird das als falsche Eingabe gewertet.
In welcher Zeichenkodierung liegen deine Daten und dein Script vor?
Sofern du UTF-8 verwendet - damit kann PHP noch (immer) nicht richtig umgehen.
Es betrachtet ein ü nicht als ein Zeichen - sondern die beiden Bytes, die es in UTF-8 repräsentieren, als einzelne Zeichen.
Für reguläre Ausdrücke bietet PHP aber den Modifier u an, mit dem du dafür sorgen kannst, dass das Suchmuster "korrekt" als UTF-8 behandelt wird.
MfG ChrisB
Oh danke, das war es tatsächlich, die Datei ist UTF-8 ohne BOM kodiert. Jetzt geht es. Ohne euch hätte ich das nie gefunden. Ich dachte, ich wäre total auf dem Holzwege :-)