• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

ereg: Nur positive Zahlen und Punkt

aJunkie

Mitglied
Hallo,

Ich habe mir die Funktion "ereg" ausgesucht, um Benutzereingaben auf folgendes zu überprufen:

  • nur positive Zahlen (muss!), also keine negativen Zahlen
  • Punkt als Dezimaltrenner (optional: entweder gar nicht oder nur einmal vorkommen)
  • keine Null (0) (Eingabe darf nicht einfach nur 0 sein)
  • dementsprechend keine anderen Sonderzeichen oder Buchstaben
PHP:
function param($name) {
    $var = preg_replace(',','.',$_POST[$name]);
    if(!empty($var)) {
    if(!is_numeric($var))     return false;
    if(!is_int($var))         return false;
    #if(!ereg('/[(\d.)]*/',$var)) return false; # funktioniert aber nicht wirklich
    if($var == 0 or $var < 0) return false; # keine Null oder negative Zahlen
    return true;
    }
    return true;
}

Wer weiß, wie ich das Suchpattern schreiben muss, dass die Bedingungen 100% passen.
Warum machen das "is_int" und "is_numeric" eigentlich nicht? Eine von den beiden Funktionen müsste false zurückgeben, lassen aber Buchstaben durch.
 
ereg-Funktionen sind veraltet und können in neuen PHP-Version wegfallen, nutze die preg-Funktionen.

Ein mögliches Pattern:

Code:
[1-9](?:\d*|\.\d+)

Eine Ziffer 1 bis 9 gefolgt von entweder null oder mehr Ziffern (0 bis 9) oder einem Punkt und mindestens einer Ziffer 0 bis 9.

Für ?: siehe: PHP: Subpatterns - Manual
 
Zuletzt bearbeitet:

Neueste Beiträge

Zurück
Oben