Oft ist es ja so, dass man einen Integer validieren möchte, der allerdings als String vorliegt (bei SOAP z.B.). Das heißt, dass uns is_int nicht weiterhilft, wie folgender Schnippsel zeigt:
Klar, ist kein int – kann man PHP keinen Strick draus drehen. Alternative ist is_numeric.
1 |
Ah, wunderbar – warum auch immer jetzt auf einmal Strings kein Problem mehr darstellen. Aber:
1 |
Klar irgendwie, “numeric” heißt nicht zwangsläufig gerade. Deswegen (meines Erachtens nach der beste Weg): intval
intval konvertiert (sofern möglich, also wenn etwa ein int in einem String vorliegt) zu Integer, allerdings kommt bei allen anderen Inputs (bspw. “wirkliche” Strings) 0 raus. intval schneidet von Kommazahlen die Nachkommastellen ab. Mein Ansatz würde dann also so aussehen:
1 2 3 4 5 6 7 8 | $number = 12.123456; doStuff($number); function doStuff($number) { $number = intval($number); if ($number > 0) { /* doStuff */ } } |
Es ist halt trotz allem genau abzuwägen, ob das “wegcasten” eventueller Nachkommastellen im jeweiligen Anwendungsfall okay ist.
Man benutzt ctype_ um Strings zu prüfen.
-> ctype_digit(“12″)