I’ve found many of my friends struggling with the validation of integers i.e. the numbers with only digits in PHP. Some of them were wondering why is_int() or is_integer() functions of PHP sometimes works and sometimes won’t.
If you become clear with the concept of integer and string in PHP then you’ll obviously come to know that why those functions are not working sometime to validate integers in PHP. Let’s look at this by an example
As you can see above, $a is string and $b is a integer and thats what does matter in PHP. Now, let’s try is_int() to validate the integers in PHP.
echo is_int($a); //returns false echo is_int($b); //return true
And many of the PHP programmers tries to validate the posted values such as is_int($_POST[‘quantity’]) and it just returns the false values although there are only digits in posted quantity.Why it is so? Because, $_POST[‘quantity’] is just a string and nothing more than a string. Values posted from the form’s element can’t be other variable type than string.
How to validate integers (digits) in PHP?
We can use regular expression to check weather posted value contains the integers only or not. But the regular expression might be a tedious task for people who are not good in using regular expression.
The best solution is using a function called ctype_digit() available in PHP. It just check weather the strings contains only digits or not. If you try using ctype_digit($_POST[‘quantity’]) then It will just give you the desired result. But one thing you keep in mind that “ctype_digit()” is character type function the supplied parameter must be a string to get the proper result. And you can use “strval()” function available in PHP to convert any other data type to string in PHP