Post auf Zahlenwerte überprüfen
Thomas,W
- php
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
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
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?
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!
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
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!
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
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!