PHP - Ist eingegebener Wert Numerisch?
-
Hi Leute
Ich schreibe grad so ein kleines Gästebuch.
Dabei werden vom Benutzer verschiedene Eingaben verlangt. U.a. soll da nach der ICQ nummer abgefragt werden. Diese besteht jedoch aus lauter Ziffern. Dammit der Benutzer jedoch keine falsche Eingabe macht, zB einen String wie "halo" da eingibt, bin ich auf die Idee gekommen, die Eingabe mittels is_float() abzufragen. Leider scheint die Funktion dennoch immer false zurückzugeben. Die eingabe wird immer als String interpretiert. Was mach ich falsch? Gibt es einen besseren Weg?Für Eure Antwort wäre ich Euch sehr dankbar
gruss
-
schonmal in the php-hilfe nachgesehen was es noch alles gibt als is_float.
z.B. is_numeric()
-
is_float würde, glaube ich, auch bei 123E2 true zurück geben, denk ich?
zur not müsste dieser reguläre ausdruck /[0-9]{9}|[0-9]{3}-[0-9]{3}-[0-9]{3}/ eine icq nummer sicher erkennen können... die ist doch immer 9 dinger lang? bzw drei mal drei ziffern?
-
Nein, die muss nicht zwangsläufig 9 Ziffern lang sein, sondern eine Zahl zwischen 10.000 und 2.147.483.646!
Und du musst unterscheiden:
is_numeric() gibt dir nur zurück, ob die Variable einen nummerischen Typ hat, nicht jedoch, ob ihr Inhalt nummerich ist! Wenn du die Funktion also verwenden willst, dann musst du vorher explizit zu int oder float casten!
-
Reyx schrieb:
is_numeric() gibt dir nur zurück, ob die Variable einen nummerischen Typ hat, nicht jedoch, ob ihr Inhalt nummerich ist!
Falsch!
is_numeric -- Finds whether a variable is a number or a numeric string
Description
bool is_numeric ( mixed var )Returns TRUE if var is a number or a numeric string, FALSE otherwise.
Ist numeric überprüft nicht den typ einer VAR sondern deren Inhalt.
-
Tatsächlich... dachte, das währe 'ne zusammenfassung von is_int() und is_float()
Tja, wieder was gelernt ...
@linu(x)bie
Dann verstehe ich allerdings nicht, dass dir die Funktion immer false zurückgibt. Überprüf mal den String, den du da bekommst, und nimm ansonsten mal den Regex von oben (ggf. mit Anfangs- und Endzeichen).php.net schrieb:
is_nummeric()
Finds whether the given variable is numeric. Numeric strings consist of optional sign, any number of digits, optional decimal part and optional exponential part. Thus +0123.45e6 is a valid numeric value. Hexadecimal notation (0xFF) is allowed too but only without sign, decimal and exponential part.
-
@Unix-Tom, Reyx und OlliGast:
Vielen dank für Eure Antworten, mittels is_nummeric() klapts perfekt
gruss