is_int () kann $ _GET in PHP nicht überprüfen?

7

Hier ist mein Code:

%Vor%

Es tritt immer in das if ein.

    
ilhan 28.06.2010, 18:25
quelle

7 Antworten

31

is_int überprüft, dass der Datentyp eine Ganzzahl ist, aber alles in $_GET ist eine Zeichenkette. Daher wird immer false zurückgegeben.

Im Notfall könnten Sie in eine Ganzzahl umwandeln und dann nach! = 0 suchen.

%Vor%

Aber eine robustere Lösung würde irgendeine Art von Eingabe-String-Validierung / -Filterung beinhalten, wie PHP's eingebautes filter_input_array() .

(Editierter Beitrag am 13. Oktober, da er immer noch Upvotes erhält und etwas verwirrend formuliert wurde.)

    
Matthew 28.06.2010, 18:29
quelle
5

Die Benutzereingabe im Array $ _GET (wie auch die anderen Superglobale) haben alle die Form von Strings.

is_int prüft den Typ (dh string ) des Wertes, nicht ob er enthält ganzzahlige Werte. Zur Verifizierung, dass die Eingabe eine Ganzzahl-Zeichenfolge ist, würde ich entweder etwas wie ctype_digit oder eine Ganzzahl filter ( FILTER_VALIDATE_INT - dies hat den Vorteil, dass der Wert tatsächlich auf integer geändert wird). Natürlich könntest du es auch mit (int) eingeben.

    
salathe 28.06.2010 18:31
quelle
3

Aus der PHP-Dokumentation für is_int:

  

Hinweis: Um zu testen, ob eine Variable a ist   Nummer oder eine numerische Zeichenfolge (z   Formeingabe, die immer eine Zeichenkette ist),   Sie müssen is_numeric () verwenden.

    
Powerlord 28.06.2010 18:31
quelle
1

Jede Benutzereingabe kommt als String, weil PHP nicht weiß, welchen Datentyp Sie erwarten.

Wirf es auf eine Ganzzahl oder verwende eine Regex, wenn du sicherstellen willst, dass es sich um eine Ganzzahl handelt.

%Vor%     
Keith Palmer Jr. 28.06.2010 18:31
quelle
1

Verwenden Sie is_numeric anstelle von is_int . is_numeric überprüft, ob es etwas gibt, das eine Zahl sein kann ( $_GET gibt Strings zurück, die ich denke). is_int überprüft, ob die Variable vom Typ int

ist     
Jason 28.06.2010 18:32
quelle
0

Verwenden Sie is_numeric () , um den Inhalt und is_int zu bewerten () um den Typ zu bewerten.

    
user3109929 14.10.2014 14:09
quelle
0

Oder Sie können einfach eine Regex-Übereinstimmung verwenden, um zu überprüfen, ob die Zeichenfolge eine Ganzzahl ist.

%Vor%     
chafreaky 11.08.2015 18:17
quelle

Tags und Links