Hi,
I was wondering, what would be the best way to validate an integer. I'd like this to work with strings as well, so I could to something like
(string)+00003 -> (int)3 (valid)
(string)-027 -> (int)-27 (valid)
(int)33 -> (int)33 (valid)
(string)'33a' -> (FALSE) (invalid)
That is what i've go so far:
function parseInt($int){
//If $int already is integer, return it
if(is_int($int)){return $int;}
//If not, convert it to string
$int=(string)$int;
//If we have '+' or '-' at the beginning of the string, remove them
$validate = ($int[0] === '-' || $int[0] === '+')?substr($int, 1):$int;
//If $validate matches pattern 0-9 convert $int to integer and return it
//otherwise return false
return preg_match('/^[0-9]+$/', $validate)?(int)$int:FALSE;
}
As far as I tested, this function works, but it looks like a clumsy workaround.
Is there any better way to write this kind of function. I've also tried
filter_var($foo, FILTER_VALIDATE_INT);
but it won't accept values like '0003', '-0' etc.