Seite 1 von 1

PHP Operatorproblem (denke ich)

Verfasst: 08.02.2003 14:53
von Advanced-Rookie
Hi, ich habe ein kleines script geschrieben um die angaben in mein formular zu prüfen. ich möchte nun prüfen ob die plz richtig eingetragen wurde. zum einen muss die länge des Ausdrucks stimmen, zum anderen sollten nur Ziffern verwendet werden.
das erste ist kein problem, nur das mit den Ziffern funktioniert bei mir nicht.
Hier ist mein Script. Es überprüft jedes Zeichen im String ob es eine Ziffer von 0-9 ist.


Das Hauptproblem ist, dass der Vergleich z.B. a==5 true ergibt, denn wenn ich Bchstaben anstatt Zahlen eintrage wird zu $number eine 1 hinzugefügt. (siehe scriptteil mit langem komentar ca. mitte)
wenn alle zeichen Zahlen sind, soll $number == "11111"
wenn nicht fehlen eben die netsprechenden 1er.
Sind 4 ziffern ist $number=="1111" also wird der untere Vergleich damit false zurückgeben. Da aber auch Buchstaben true ergeben bekomme ich für 5 zeichen immer ein true zurück

was soll ich denn jetzt tun?
Wo liegt der Fehler
//plz

if (($_POST['plz'] != "") and (strlen($_POST['plz']) == 5))
{
$plz=$_POST['plz'];
$number="";
echo "number: ".$number."<br>";
for ($i=0;$i<strlen($plz);$i++)
{
for ($j=0;$j<=9;$j++)
{
echo $plz[$i].", ";
if ($plz[$i] == $j) {$number.="1"; break;} //Vergleich vom Zeichen an der Stelle $i mit einer Ziffer von 0-9
}
}
echo "zahl? ".$number."<br>";
if ($number=="11111")
{ $check.="1";}
else
{
$check.="0";
}
}
else {$check.="0";}

Verfasst: 08.02.2003 15:54
von Gast
vesuchs doch mal mit is_numeric()
http://www.php.net/manual/en/function.is-numeric.php

pg :)

Verfasst: 08.02.2003 16:27
von Pyramide
Oder alternativ mit preg_match($plz, '^[0-9]{5}$');

Verfasst: 08.02.2003 17:26
von Advanced-Rookie
thx, hat alles wunderbar geklappt, wüsste trotzdem gern wo mein Fehler lag grrrr....!!!

;)

Verfasst: 08.02.2003 19:54
von Jensemann
Pyramide hat geschrieben:Oder alternativ mit preg_match($plz, '^[0-9]{5}$');
so schön reguläre ausdrücke auch sind, sollte man doch drauf verzeichten für so kleinigkeiten, sie machen das script nur unnötig langsam.