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:

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

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

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

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

1
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:

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.

Weitere Posts:

Dieser Beitrag wurde unter php, Quicktips, Security, 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″)

Hinterlasse eine Antwort

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

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>