Проверка на целое число в php

Создадим универсальную функцию, которая будет проверять переменные на целые числа.

PHP
  1. function isIntNumber($number){
  2. if (!is_int($number) && !is_string($number)) return false;
  3. if (!preg_match("/^-?(?:[1-9]\\d*)$/", $number)) return false;
  4. return true;
  5. }

Конструкция следующая: передаём переменную функции, затем проверяем, не является ли она целым числом и строкой (числа могут передаваться и в строке):

PHP
  1. if (!is_int($number) && !is_string($number)) return false;

Далее идёт регулярное выражение по проверки числа. В ней мы ищем совпадения.

В начале строки либо минус (с количеством повторений 0 или 1), либо ничего, для проверки на положительное и отрицательное число со знаком минус.

PHP
  1. ^-?

Затем проверки на сами числа, где первые числа от 1 - 9, а вторые и последующие от 0 до 9 (для исключение "05" и т.д.) или вместо всего этого у нас 0 (|0 - оператор альтернативы).

PHP
  1. (?:[1-9]\d*)$

Это и есть надёжная проверка на целые числа, к примеру им проверяют идентификаторы.


Взято с Daruse и переписано

    Comments