$_POST und is_float

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • $_POST und is_float

    Hallo,

    die Lösung für diese Frage ist bestimmt ganz einfach, aber ich kann sie momentan einfach nicht finden.

    Ich möchte einen per POST übergebenen Wert auf is_float überprüfen. $_POST-Werte sind aber ja strings.
    Zuerst habe ich es so gemacht, dass ich den Wert in float und dann wieder in string umgewandelt habe, so:
    PHP-Code:
    if ($_POST['faktor'] == strval(floatval($_POST['faktor']))) { 
    Das funzt auf PHP 4.3.8. Test:
    PHP-Code:
    echo("POST: " $_POST['faktor'] . "<br>"); 
    echo(
    "float: " floatval($_POST['faktor']) . "<br>");
    echo(
    "str(float): " strval(floatval($_POST['faktor'])) . "<br>"); 
    ergibt z.B.
    POST: 0.1
    float: 0,1
    str(float): 0.1

    auf PHP 5.1.2 gibt die Rückumwandlung aber ein Komma mit aus:

    POST: 0.1
    float: 0,1
    str(float): 0,1

    Langer Rede kurzer Sinn: gibt es etwas geschickteres, als den Wert am Punkt bzw. Komma zu zerschneiden und die Teile davor und dahinter auf ctype_digit zu überprüfen?

    Danke im Voraus,
    ministry
    ich glaube

  • #2
    einfach
    if(is_float($_POST['faktor']))
    is_float functioniert auch bei strigs
    wenn du aber angst hast, dass in dem Zahl eine "," statt "." steht, dann muss du
    $_POST['faktor']=str_replace(",",".",$_POST['faktor']);
    anwenden
    Zuletzt geändert von Slava; 11.07.2006, 13:59.
    Slava
    bituniverse.com

    Kommentar


    • #3
      einfach
      if(is_float($_POST['faktor']))
      is_float functioniert auch bei strigs
      wenn du aber angst hast, dass in dem Zahl eine "," statt "." steht, dann muss du
      $_POST['faktor']=str_replace(",",".",$_POST['faktor']);
      anwenden
      Nö.

      PHP-Code:
      echo("0.1: " is_float("0.1") . "<br>");
      echo(
      "0,1: " is_float("0,1") . "<br>");    
      echo(
      "f 0.1: " is_float(0.1) . "<br>"); 
      gibt mir
      0.1:
      0,1:
      f 0.1: 1

      (is_float(0,1) gibt logischerweise einen Fehler.)
      ich glaube

      Kommentar


      • #4
        is_numeric -- Finds whether a variable is a number or a numeric string


        das sollte gehen - laut Manual

        Kommentar


        • #5
          Jup, danke - is_numeric habe ich gesucht (manchmal sieht man den Wald vor lauter Bäumen nicht, sorry.....).

          Hat zwar den Schönheitsfehler mit "0xFF" aber irgendwas ist ja immer.

          Gruß,
          ministry
          ich glaube

          Kommentar


          • #6
            komisch!
            dann mach einfach
            if(preg_match("^d*\.?\d+$",$_POST['faktor']))
            echo "ein zahl";
            Slava
            bituniverse.com

            Kommentar


            • #7
              Hi Slava,

              der gibt mir Warning: No ending delimiter '^' found in /var/www/html/arbeitszeit/test.php on line 3.

              Ich musszugeben, dass ich mich um die Regexp bis jetzt gedrückt habe, aber ich schätze mal, es sucht nach Zahl - Punkt - Zahl. Ich bin aber ehrlich gesagt, mit is_numeric glücklicher, da versteh ich dann auch direkt was es tut... Aber danke trotzdem !!!

              Gruß,
              ministry
              ich glaube

              Kommentar


              • #8
                ja klar!
                mein fehler!
                ich habe delimeter vergessen
                so muss es sein
                '/^\d*\.?\d+$/'
                aber is_numeric ist doch einfacher.
                Slava
                bituniverse.com

                Kommentar

                Lädt...
                X