Quicktip: Integer Validation

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:

var_dump(is_int("12")); //false 

Klar, ist kein int – kann man PHP keinen Strick draus drehen. Alternative ist is_numeric.

var_dump(is_numeric("12")); //true 

Ah, wunderbar – warum auch immer jetzt auf einmal Strings kein Problem mehr darstellen. Aber:

var_dump(is_numeric("12.123456")); //true 

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:

$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.


Deprecated: Directive 'allow_url_include' is deprecated in Unknown on line 0