Formularkontrolle mit eregi

chpa

Erfahrenes Mitglied
Hallo Leute,

habe gerade in ganz ganz komisches Problem :-D

Ich möchte bei einem Anmeldeformular das Feld überprüfen, in dem die Postleitzahl eingegeben wird.

Natürlich überprüfe ich, ob die Zahl 5 stellig ist und ob sie nur aus zahlen von 1-9 besteht.

So:

Code:
eregi("^[1-9] {5}$",$string)

Wenn ich jetzt z.B. die PLZ 92447 eingebe funktioniert die kontrolle. Wenn ich aber z.B. 85847 eingebe funktionert Sie nicht. Also Sie zeigt mir an, dass das keine gültige PLZ ist.

Aber es ist doch auch nur eine 5 stellige Zahl

Wie kann das sein?
 
Ich bezweifle, dass das mit 92447 gegangen ist.
Nehm mal das Leerzeichen nach der Zeichenklasse heraus.
Das, was dein Muster aktuell findet, ist eine Ziffer gefolgt von 5 Leerzeichen :-)

Übrigens: Ich wohne in 10439 ;)
 
@sven

alter Berliner :-D

Ok dann werde ich mal die preg_ funktion probieren. vielen dank schon mal.

ich melde mich dann nochmla ob's geklappt hat
 
Die Zeichenklasse „[1-9]“ für die erste Stelle einer Postleitzahl zu bestimmen, ist schon mal richtig. Bei den anderen Stellen sollte jedoch auch die Null möglich sein: [1-9][0-9]{4}.
 
Und was machen wir mit Leuten die nicht aus Dland kommen?
Und was machen wir mit den Leuten die ganz gerne mal ihr Länderkürzel vor die PLZ setzen?
 
Hi, da habe ich dann auch mal was.
Und ganz allgemein, eregi ist veraltet und du solltest die preg_* funktionen benutzen.
Das habe ich hier
PHP:
if( !isset($_POST['email']) || trim($_POST['email'])=='' ) {
            $notes['error'][] = 'Bitte geben Sie Ihre E-Mail-Adresse an!';
        } elseif( preg_match("<^(?:[a-zA-Z\d$\-_.+!*'(),;/?:@&=]|(?:%[a-fA-F\d]{2}))+$>", $_POST['email']) ) {
            $notes['error'][] = 'Bitte geben Sie eine korrekte E-Mail-Adresse an!';
        }
auch gemacht, aber es funtioniert nicht Es klappt aber mit "eregi".also so
PHP:
if( !isset($_POST['email']) || trim($_POST['email'])=='' ) {
            $notes['error'][] = 'Bitte geben Sie Ihre E-Mail-Adresse an!';
        } elseif(($_POST['email']) && !eregi("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-.]?[0-9a-zA-Z])*\\.[a-zA-Z]{2,4}$", ($_POST['email']))) {
            $notes['error'][] = 'Bitte geben Sie eine korrekte E-Mail-Adresse an!';
        }
Warum ist das so?
.
.
.
Gruss Dieter
 
Du verwendest doch zwei ganz unterschiedliche reguläre Ausdrücke:
Code:
^(?:[a-zA-Z\d$\-_.+!*'(),;/?:@&=]|(?:%[a-fA-F\d]{2}))+$
Code:
^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-.]?[0-9a-zA-Z])*\\.[a-zA-Z]{2,4}$
 
Zurück