Создадим универсальную функцию, которая будет проверять переменные на целые числа.
function isIntNumber($number){
if (!is_int($number) && !is_string($number)) return false;
if (!preg_match("/^-?(?:[1-9]\\d*)$/", $number)) return false;
return true;
}
Конструкция следующая: передаём переменную функции, затем проверяем, не является ли она целым числом и строкой (числа могут передаваться и в строке):
if (!is_int($number) && !is_string($number)) return false;
Далее идёт регулярное выражение по проверки числа. В ней мы ищем совпадения.
В начале строки либо минус (с количеством повторений 0 или 1), либо ничего, для проверки на положительное и отрицательное число со знаком минус.
^-?
Затем проверки на сами числа, где первые числа от 1 — 9, а вторые и последующие от 0 до 9 (для исключение «05» и т.д.) или вместо всего этого у нас 0 (|0 — оператор альтернативы).
(?:[1-9]\d*)$
Это и есть надёжная проверка на целые числа, к примеру им проверяют идентификаторы.
Взято с Daruse и переписано