PHP. Является ли строка целым числом?
Проблема в следующем: нужно определить, является ли строка целым числом. Перепробовал многое, но ничего не работает корректно. Вот:
if(is_int($value)) { ...
Если предавать аргумент как string, т.е. в кавычках, например, '123', то даже в этом случае возвращается false.
if((int)($value)) { ...
Если делать преобразование типа, то в этой ситуации возвращается true, если аргумент число с плавающей точкой...тоже не подходит :(
if(ctype_digit($value)) { ...
В этом же варианте возвращается true, даже если аргумент начинается с нуля, т.е. '0123', что по сути не является целым числом.
Может у кого-то есть рабочий вариант?
Заранее благодарю!
Ответы (3 шт):
Ну, а если как-то так:
function isDigit($value) {
return false !== strpos($value, '.')
? false
: is_numeric($value);
}
- Целое - 0.2s (TRUE)
- Целое типа строка ("12") - 0.2s (TRUE)
- Float - 0.2s (FALSE)
- Float типа строка ("12.25") - 0.2s (FALSE)
if ((is_int($val) || ctype_digit($val)) && (int)$val >= 0 ) echo 'true'; else echo 'false';
Как и в принципе, вариантов куча. Если не брезгуете быстродействием, то хоть через "регулярки" пихайте.
А, и про число 0 - это целое число.
Можно так:
$isInt = (string) (int) $value === (string) $value;