[PHP] Überprüfen, ob Variable eine Zahl ist und zwischen 0 und 6 liegt.

T-Flow

Scheidenpilz!
ID: 16924
L
24 August 2006
10.107
434
Huhu,

kleine Frage: mit welcher Befehlsfolge kann ich denn überprüfen, ob eine per "POST" übertragene Variable eine Zahl ist und größer als 0 und kleiner als 6 ist?

Für die Antwort kann ich leider keine Lose bieten, würde mich aber trotzdem für die Hilfe mit einem grünen Popel (Renommee) bedanken :mrgreen:

Grüßle, T-Flow
 
Danke, allerdings muss ich noch vorher überprüfen, wieviele Gif-Dateien im aktuellen Ordner liegen (in dem auch das Script liegt)

:D
 
Ungetestet, aber dürfte funktionieren:

PHP:
$dir = opendir('./');
$i = 1;
while($file = readdir($dir)){
  if(preg_match('~\.gif$~', $file)){
    $i++;
  }
}
closedir($dir);
 
Danke, funktioniert super...

Jetzt kann bei meinem Change-My-Avatar oben in der Adress-Zeile jeder eintragen, was er will und alles klappt....

Bugtester gerne willkommen :D
 
Moep, hängt man "3.1" an (oder jede beliebige andere Kommazahl zwischen 0 und 6), gibt's n Fehler...
 
Moep, hängt man "3.1" an (oder jede beliebige andere Kommazahl zwischen 0 und 6), gibt's n Fehler...

(...) Variable eine Zahl ist und größer als 0 und kleiner als 6 ist?

Es läuft also darauf raus, dass nur Ganzzahlen akzeptiert werden sollen? Dann mal statt is_numeric ein is_int probieren. (Bin mir allerdings immer noch nicht sicher, ob is_int wirklich zuverlässig arbeitet.) Ansonsten halt auf einen RegExp zurückgreifen - für zwischen 0 und 6 gäb's dann ja ^[0-6]$, sonst ^[1-9]\d*$ oder so ähnlich (gegen eine führende Null), sonst das weglassen und hinten aus dem * ein + machen; am besten nochmal nachfragen, wenn du das zu nutzen wünscht. :D (Beziehungsweise: beschreibe genauer, was der Inhalt der Variable sein darf; oder Inhalt in einem String...)
 
Naja, es sollten eigentlich nur 1, 2, 3, 4 oder 5 angenommen werden. Wie mach ich das dann? Irgendwie so:?
Code:
$zahl = is_int;
 
PHP:
if(preg_match("/^[0-5]{1}$/", $zahl)){
[...]
}
Ich weiß nicht, ob die Mengenbegrenzung bei einer einstelligen Zahl im regex von Bedeutung ist, aber bei mir hat er mal gar nichts zugelassen, als weder ? + * oder eine Mengenbegrenzung angegeben war ;)
 
ich glaub ich machs etwas unkomplizierter und runde einfach die Zahl ab *g* Is ja nur für mein Avatar-Changer und wenn einer ne Kommazahl eingibt, hat er ja offensichtlich auch net vor eins wirklich auszuwählen
 
ctype_digit() würde sich hier anbieten.

@raven:

Eigentlich müsste der RegExp ohne die Mengenangabe auskommen, sprich:
Code:
~^[0-5]$~
Dürfte vollkommen reichen.
 
So, hab's jetzt folgendermaßen gelöst *g*

PHP:
$changeid = intval($_GET['id']);
$changeid = floor($changeid);

Hab' nämlich keine Ahnung, was ihr mit RegExp meint 8O