Мне было интересно, что будет лучшим способом проверки целого числа.
Я бы хотел, чтобы это работало и со строками, чтобы я мог что-то вроде
(строка) +00003 -> (int) 3 (допустимо)
(строка) -027 -> (int) -27 (допустимо)
(int) 33 -> (int) 33 (действует)
(строка) '33a' -> (ЛОЖЬ) (неверно)
Вот к чему я так далеко:
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;
}
Насколько я тестировал, эта функция работает, но выглядит как неуклюжий обходной путь.
Есть ли лучший способ написать такую функцию. Я также попробовал
filter_var($foo, FILTER_VALIDATE_INT);
но он не будет принимать значения типа '0003', '-0' и т. Д.