Variable besteht aus Zahlen ?



  • Hallo,
    wie kann ich unter PHP überprüfen ob eine Variable nur aus Zahlen besteht ?
    Ich hab schon was von regulären Ausdrücken gelesen verstehe aber den ganzen Spaß nicht wirklich. Kann mir jemand helfen ?



  • Ich weiß zwar net genau, was du willst, aber mit den regulären Ausdrücken sollte das so aussehen:

    if(ereg('^[0-9]*$',$zahl)) {
     echo 'Wirklich eine Zahl';
    }
    else echo 'Doch nicht';
    

    Hier muss der String halt ausschließlich aus Zahlen bestehen, also z.B. eine Gleitkommazahl wie 12.5 wäre schon nicht mehr gültig 😉


  • Mod

    wie wäre es mit

    if(is_float(var)is_int(var) || is\_int(var))

    is_numeric() wäre auch ne möglichkeit, aber das macht uU Probleme bei großen zahlen...



  • Shade, bist du dir sicher, dass das funktioniert?

    In der Doku steht:

    is_float -- Prüft, ob eine Variable vom Typ float ist

    Das heißt für mich so viel, dass die Variable gerade als float behandelt wird. Ich bin mir nicht sicher, aber möglicherweise springt diese Funktion nicht an, wenn es zuvor ein String war.

    Ich teste das mal... und hatte Recht (folgendes Programm, gibt "Kein Float" aus):

    <?php
    
    $test = "1.25";
    
    if (is_float($test))
      echo "Float!";
    else
      echo "Kein Float";
    
    ?>
    

    Meine Alternative ist:

    <?php
    
    $test = "1.25";
    
    if ((float)$test == $test)
      echo "Float!";
    else
      echo "Kein Float";
    
    ?>
    

    Könnte man natürlich auch noch auf Integer ausweiten.



  • Er wollte aber, dass eine Variable nur aus Zahlen besteht! Bei euren Methoden funktioniert das z.B. bei "012345" nicht mehr 🙄



  • Ja, weil die 0 am Anfang steht. Aber das könnte man ja auch noch abschneiden.

    Kommt halt drauf an, was man braucht.


  • Mod

    ah sorry.
    nicht is_int sondern ctype_digit meinte ich - habs leider durcheinander gebracht 😞

    ctype_digit liefert true wenn alle zeichen des strings dezimalzahlen sind.



  • Danke für die Hilfe 🙂


Anmelden zum Antworten