Thomas,W: Post auf Zahlenwerte überprüfen

Hallo,

ich möchte gerne einen per POST übergebenen Zahlenwert zu prüfen. Welche Möglichkeit habe ich folgende Wertformate zu prüfen:

123,234
123
123.345

Danke Thomas

  1. Hello,

    ich möchte gerne einen per POST übergebenen Zahlenwert zu prüfen. Welche Möglichkeit habe ich folgende Wertformate zu prüfen:

    123,234
    123
    123.345

    Es gibt in PHP die Filterfunktionen.
    http://de.php.net/manual/en/book.filter.php

    Wenn die nicht ausreichen, dann kannst Du auch selber etwas basteln, z.B. mit Hilfe von regulären Ausdrücken.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo,

      Zitat:

      Wenn die nicht ausreichen, dann kannst Du auch selber etwas basteln, z.B. mit Hilfe von regulären Ausdrücken.

      Ich habe gerade http://de3.php.net/manual/de/function.is-numeric.php gefunden, was ist denn hiervon zu halten?

      1. Hi!

        Ich habe gerade http://de3.php.net/manual/de/function.is-numeric.php gefunden, was ist denn hiervon zu halten?

        Diese Funktion findet nur Zahlen, wie sie PHP selbst verwendet - dann aber auch hexadezimal notierte und solche in Exponentialdarstellung, aber keine national formatierten.

        Lo!

      2. Hello,

        Wenn die nicht ausreichen, dann kannst Du auch selber etwas basteln, z.B. mit Hilfe von regulären Ausdrücken.

        Ich habe gerade http://de3.php.net/manual/de/function.is-numeric.php gefunden, was ist denn hiervon zu halten?

        Das kannst Du eigentlich selber ausprobieren, wie weit dich diese Funktion bringt:

        Ich habe das Beispiel mal etwas erweitert:

        #----------------------
        <?php  ### is_numeric.php ###

        $tests = array(
                "42",
                1337,
                "1e4",
                "not numeric",
                'hans123',
                '123Hans',
                '456 123',
                '1234,777',
                '12.234.890,7',
                Array(),
                9.1
                );

        echo "<pre>", PHP_EOL;

        foreach ($tests as $element)
        {
            if (is_numeric($element))
            {
                echo "'{$element}' is numeric", PHP_EOL;
            }
            else
            {
                echo "'{$element}' is NOT numeric", PHP_EOL;
            }
        }
        ?>
        #----------------------

        Das ergibt dann:

        '42' is numeric
        '1337' is numeric
        '1e4' is numeric
        'not numeric' is NOT numeric
        'hans123' is NOT numeric
        '123Hans' is NOT numeric
        '456 123' is NOT numeric
        '1234,777' is NOT numeric
        '12.234.890,7' is NOT numeric
        'Array' is NOT numeric
        '9.1' is numeric

        Wie Du siehst, wird '12.234.890,7' als nicht numerisch bezeichnet. Die Einstellungen des Systems für Dezimalseparator und Tausender-Trenner passen also nicht zur deutschen Darstellung.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hi!

          Wie Du siehst, wird '12.234.890,7' als nicht numerisch bezeichnet. Die Einstellungen des Systems für Dezimalseparator und Tausender-Trenner passen also nicht zur deutschen Darstellung.

          is_numeric() hat den Punkt als Dezimaltrennzeichen fest einkodiert.

          Lo!

          1. Hello,

            Wie Du siehst, wird '12.234.890,7' als nicht numerisch bezeichnet. Die Einstellungen des Systems für Dezimalseparator und Tausender-Trenner passen also nicht zur deutschen Darstellung.

            is_numeric() hat den Punkt als Dezimaltrennzeichen fest einkodiert.

            Ich habe auch vergessen, wie die Einstellmöglichkeiten für Dezimalseparator und Tausender-Trenner in PHP heißen und ob PHP überhaupt diese Möglichkiet hat. Oder bringe ich das jetzt mit dBase durcheinander? Ich habe in den letzten Wochen soviele uralte dBase-Programme angepasst, dass ich immer durcheinander komme.

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Hi!

              is_numeric() hat den Punkt als Dezimaltrennzeichen fest einkodiert.
              Ich habe auch vergessen, wie die Einstellmöglichkeiten für Dezimalseparator und Tausender-Trenner in PHP heißen und ob PHP überhaupt diese Möglichkiet hat.

              In der Syntax von PHP ist festgelegt, dass es nur den Punkt als Dezimalseparator gibt. Da gibt es nichts einzustellen, ansonsten würden Quelltexte nicht auf anderen Systemen laufen und man hätte diesbezüglich schon viele Problembeschreibungen lesen müssen.

              Formatierungen zum Zwecke der Ausgabe stehen auf einem anderen Blatt. Und mir ist davon auch keine Umkehrfunktion in PHPs Lieferumfang bekannt.

              Lo!