folgender Code soll nur Zahlen zulassen von 0 bis 9:
if (!preg_replace('/[^0-9]/','',$Erg[$a]))
$errors[$a] = "Ungültige Zeichen!";
funktioniert auch mit den Zahlen von 1-9. Aber Zahl 0 funktioniert nicht.
Wenn in der Variable $Erg[$a] der Wert 0 ist, ist der Rückgabewert von
preg_replace 0. Irgendwie finde ich kein Lösungsansatz.
[quote=“ollik”]funktioniert auch mit den Zahlen von 1-9. Aber Zahl 0 funktioniert nicht.
Wenn in der Variable $Erg[$a] der Wert 0 ist, ist der Rückgabewert von
preg_replace 0.[/quote]
Natuerlich, ebenso wie er bei 1 1 waere, oder bei 9 9.
Aber es ist ja auch unsinnig, preg_replace zu nehmen, wenn du eigentlich gar nichts ersetzen, sondern nur pruefen willst. Dafuer gibt es preg_match.
Dann musst du dein Suchmuster noch anpassen, wenn du ausschliesslich Ziffern zulassen willst.
/^[0-9]+$/
^ fuer Stringanfang, $ fuer Stringende, und dazwischen nur Ziffern, 1 oder mehr Male.
[quote=“michi7x7”]es gibt da eine ausgezeichnete Funktion: php.net/is_nummeric[/quote]
bei der allerdings auch zahlen wie 123.456 als Numerisch gelten.
wenn es nur Ziffern sein sollen, ist preg_match besser.
nein, es gib ja auch noch is_int()
allerdings prüft das auf den typ integer, wenn du dem einen string aus zahlen übergibst, ist das noch was anderes, da ein string aus zahlen kein int ist
aber für strings aus zahlen gibt es auch ne funktion. frag mich jetzt aber nicht nach dem genauen anmen