Julia: Regulärer Ausdruck, Umlaute und/oder Brett vor dem Kopf

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

  1. 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

  2. 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

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  3. 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 :-)