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.

Weitere Posts:

Dieser Beitrag wurde unter php, Security, Quicktips, webdev veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Eine Antwort auf Quicktip: Integer Validation

  1. matze sagt:

    Man benutzt ctype_ um Strings zu prüfen.

    -> ctype_digit(„12“)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.