Archiv verlassen und diese Seite im Standarddesign anzeigen : Überprüfung ob Eingabe eine Zahl ist
Ich muss bei mehreren Skripten überprüfen, ob die Usereingabe eine Zahl ist, da es sonst Fehler gibt
Ich habs versucht mit gettype() und is_int() aber beide stempeln den Wert der per Formular gesendet wird als String ab obwohl er wirklich nur ne Zahl is, hat da jemand ne Lösung ??
Hi Duke,
überprüf die Eingabe mit einer regular-expression.
if (preg_match("^[0-9]+$", $var_mit_eingabe))
{
//auszuführender Code wenn Eingabe ne Zahl ist
}
else
{
//Fehlerbehandlung wenn Eingabe keine Zahl ist (dies beinhaltet leere Variable)
}
gruss,
phate
Also so läuft das bis jetzt aber noch nit der mag den ^ nicht und das +$ auch nicht und ohne die beiden funktioniert es nicht
...
<?
if (preg_match("^[0-9]+$", $var))
{
echo "IS"; //auszuführender Code wenn Eingabe ne Zahl ist
}
else
{
echo "NEIN"; //Fehlerbehandlung wenn Eingabe keine Zahl ist (dies beinhaltet leere Variable)
}
?>
Hi Duke,
bei mir funktioniert o.g. einwandfrei. Meine wahrlich nicht neuste PHP-Version ist 4..1.2 und insofern dir Dein PHP die Verwendung von preg_match nicht anmeckert, dann muss es bei Dir auch funktionieren, denn die Syntax von pcre (perl comatible regular expressions) ist fest definiert.
Nun noch kurz zu Deinem Verständnis ein paar erhellende Worte zu verwendeter regex.
preg_match prüft eine Variable gegen ein Prüfmuster bestehend aus Zeichen, Zeichenklassen und Metazeichen, eine sog. regular expression. Die in konkretem Fall verwendete Regex ist von links nach rechts zu lesen und setzt sich folgendermassen zusammen:
^ Markiert den Beginn der zu prüfenden Variable
[0-9] Beschreibt eine Zeichenklasse mit den Zahlen 0-9
+ Wirkt als Quantifier für die vorangehende Zeichenklasse und legt fest, dass diese ein- oder mehrmal vorkommen muss
$ Markiert das Ende der zu prüfenden Variable
Stell Dir das ganze wörtlich vor und lies es von links nach rechts. Die Variable beginnt, es folgt eine Zahl (bestehend aus mind. einer aber beliebig vielen Ziffern) und die Variable endet.
Lässt Du nun ^ und $ (die sog. Anker) fort, so würde der Ausdruck auch auf Variablen wie z.B. "abc123def" passen, da der Ausdruck nun an beliebiger Stelle in zu überprüfender Variable stehen kann. Entfernst Du nun noch das + bedeutet das, dass der Ausdruck auf eine Ziffer an beliebiger Stelle in zu überprüfender Variable passt und dass ist wahrlich nicht das, was Du erreichen willst.
Wenn Du das ganze etwas ausführlicher nachlesen willst, schau Dir mal http://www.tekromancer.com/perl/7.html an.
gruss,
phate
Also eigenltich sollte das zeug bei mir auch von nem php4 mod gemacht werden ich muss mal schauen welches modul ich genau habe
#
# AddType allows you to tweak mime.types without actually editing it, or to
# make certain files to be certain types.
#
# For example, the PHP 3.x module (not part of the Apache distribution - see
# http://www.php.net) will typically use:
#
# <IfModule mod_php3.c>
# AddType application/x-httpd-php .php .php3 .php4
# AddType application/x-httpd-php3-source .phps
# AddType application/x-httpd-php3 .phtml
#</IfModule>
#
# And for PHP 4.x, use:
#
<IfModule mod_php4.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php4 .php3
AddType application/x-httpd-php-source .phps
</IfModule>
Sieht aus als hätte ich 4.0.4 drauf und eigenltich habe ich auch kein Bock das jetzt upzudaten
Solltest du tun... egal ob du bock hast oder nicht... mit 4.04 lässt sich nicht mehr vernünftig entwickeln (von den Sicherheitslücken ganz zu schweigen).
Kann ich das alte modul mit nem neuen ohne probleme überschreiben sprich einfach nen neues rpm installieren ??
Wenn die alte Version ne rpm war, dann sollte das IMHO funktionieren.
Hi Duke,
IMHO ^= In My Humble Opinion, also seiner bescheidenen Meinung nach. Seh ich übrigens auch so.
rpm -Uvh packname.rpm
War Deine jetzige Version per rpm installiert, dann wird Dir dieser Befehl in Verbindung mit dem entsprechenden neueren Paket, das ganze updaten.
gruss,
phate
So gehts übrigens :cool:
if (!preg_match('/^[0-9]*$/', $variable)) { $fehler.="Die Variable darf nur aus Zahlen bestehen.";}
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.