Gustav Gans: Regulärer Ausdruck für Eingabeüberprüfung

Moin!

Ich möchte die userseitige Formulareingabe des Namens ($_POST['name']) überprüfen.

Derzeit sieht meine Überprüfung zur weiteren Verarbeitung folgendermaßen aus:

<?php  
 if(($_POST['name']!="")AND(strlen($_POST['name'])>2))  
  {  
   $chekname=true;  
  }  
 else  
  {  
   if($_POST['name']=="")  
    {  
     $nameerror="Der Name <strong>muß</strong> angegeben werden.";  
    }  
   if(($_POST['name']!="")AND(strlen($_POST['name'])<3))  
    {  
     $nameerror="Der Name <strong>muß</strong> aus mindestens 3 Zeichen bestehen.";  
    }  
   $checkname=false;  
  }  
?>

Nun möchte ich aber, dass es bei der Minimalverwendung von 3 Zeichen auch wirklich Buchstaben sind, also wenn zB jemand "Udo" eingibt, aber keine Leerzeichen erlaubt sind.

Leerzeichen generell kann ich aber auch nicht verbieten, weil dann "Udo Testmann" false wäre.

Das Ziel ist also: Keine Leereingabe, mindestens 3 Zeichen und Leerzeichen ist nur erlaubt bei mindestens 7 Zeichen.

Wie muß ich da den Code verändern? Kenne mich mit regulären Ausdrücken leider nicht aus.

Danke für Hilfe!

Gustav Gans

  1. Hi,

    das ersetzt dir mehrfache whitespaces durch einen blank ... hoff ich.

    $pattern[0]     = '/\s+/';
    $replace[0]     = ' ';
    $sanitised      = preg_replace($pattern, $replace, trim($input));

    Das trim() entfernt vorab leading und trailing whitespaces.

    Viel Erfolg!

    1. Hallo!

      das ersetzt dir mehrfache whitespaces durch einen blank ... hoff ich.
      $pattern[0]     = '/\s+/';
      $replace[0]     = ' ';
      $sanitised      = preg_replace($pattern, $replace, trim($input));
      Das trim() entfernt vorab leading und trailing whitespaces.

      Vielen Dank!

      Nach dedlfix`s Antwort aber frag ich mich, ob ich mir das WIRKLICH antun sollte und nicht einfach nur überprüfe, ob überhaupt IRGENDWAS eingegeben worden ist.

      Gustav Gans

  2. echo $begrüßung;

    Ich möchte die userseitige Formulareingabe des Namens ($_POST['name']) überprüfen.

    if(($_POST['name']!="")AND(strlen($_POST['name'])>2))

    Du hast die Prüfung auf Vorhandensein vergessen. isset() ist dafür vorgesehen.

    Nun möchte ich aber, dass es bei der Minimalverwendung von 3 Zeichen auch wirklich Buchstaben sind, also wenn zB jemand "Udo" eingibt, aber keine Leerzeichen erlaubt sind.

    Es gibt Namen, die kürzer als drei Buchstaben sind. Außerdem schützt dich diese Prüfung in keiner Weise vor der Eingabe von sinnlosen Buchstabenkombinationen. Sie wiegt dich nur mehr oder weniger in einer Sicherheit, die trügerisch ist. Meine Empfehlung: beschränke dich auf die Prüfung mit empty() (isset() kann man sich dabei sparen) anstatt komplexe soziale Probleme mit einfachen technischen Mitteln lösen zu wollen.

    echo "$verabschiedung $name";

    1. Hallo!

      if(($_POST['name']!="")AND(strlen($_POST['name'])>2))
      Du hast die Prüfung auf Vorhandensein vergessen. isset() ist dafür vorgesehen.

      Nein, habe ich nicht. Die kommt gleich zu Beginn aller Überprüfungen. Ist sie nämlich nicht vorhanden, wird ein leeres Formular ausgegeben und es kommt zu keiner Überprüfung irgebndwelcher Eingaben. Ich habe den teil des Codes nur weggelassen, weiler für meine Frage irrelevant war.

      Es gibt Namen, die kürzer als drei Buchstaben sind.

      Keine, die ich akzeptieren würde. *g*

      Außerdem schützt dich diese Prüfung in keiner Weise vor der Eingabe von sinnlosen Buchstabenkombinationen. Sie wiegt dich nur mehr oder weniger in einer Sicherheit, die trügerisch ist. Meine Empfehlung: beschränke dich auf die Prüfung mit empty() (isset() kann man sich dabei sparen) anstatt komplexe soziale Probleme mit einfachen technischen Mitteln lösen zu wollen.

      Schade. :-( Aber vielleicht hast Du ja Recht.

      Gustav Gans