Задать вопрос
sbh
@sbh

Как проверить переменную $_GET на целое число?

Подскажите как проверить переменную получаемую из $_GET на целое число?
is_int не работает. Желательно сделать проверку встроенными средствами php. Ясно что можно написать функцию самому, но я думаю встроенные средства уже есть. Так же хотелось бы узнать почему is_int так себя ведет.
  • Вопрос задан
  • 6618 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@ylebedev
if($_GET['id'] > 0) { }

if (preg_match('/^\+?\d+$/', $value)) {
    echo "Целое положительное число :-)";
}


if ($value && ctype_digit((string)$value)) {
    echo "$value is positive integer\n";
}


$a = 100;
//$a = '1a';
//$a = 0;
//$a = '1,1';
//$a = 1.1;
//$a  = 'a';

if(!intval($a) or $a < 1 or !preg_match('/^\+?\d+$/', $a))
{
    echo 'BaD';
}
else
{
    echo 'GooD';
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
mr_T
@mr_T
Web-разработчик
Че-то как-то трудно тут все у вас)
Почему бы не так?
if (($id = intval($_GET['id'])) > 0) { бла-бла-бла }
Ответ написан
А зачем? Приведите к целому и все.
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
var_dump(
  (string)ceil((float)$_GET['test']) 
    === 
  (string)$_GET['test']
);

не?
Ответ написан
alesu1543
@alesu1543
Программист
Мне нравится такое решение:
if(((int)$_GET['id']) > 0) {
echo "Целое положительное число";
}
Ответ написан
Допустим есть переменная $a = "100"; То есть строка содержащая целое число.
myint($a,true);// вернёт true
myint($a,false);// вернёт false поскольку для того чтобы проверять и строковые значения нужно передавать true в качестве второго параметра

или же
$a = "100";// то-есть Int 100

тогда
myint($a,true);// вернёт true
myint($a,false);// тоже вернёт true

Обратите внимание в PHP нет функции myint, чтобы ей пользоваться разместите предварительно её код из листинга по ссылке: blog.ivru.net/?id=103
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы