if (ereg("^[0-9]+$", $var)) { число }
URL:
Обсуждается: http://www.opennet.me/tips/info/83.shtml
if (is_numeric($var)) { число }is_numeric()
Returns TRUE if var is a number or a numeric string, FALSE otherwise.
PHP 4 >= 4.0.0
if($var+0==$var) это число
$var="dfsgdsfgdf";
if($var+0==$var) -> еррор лог апача быстро распухнет хренатенью от таких проверок.
Чья бы корова мычала...
if(is_numeric($var)) это тоже число :)
для Perl
if ($var =~ /^\d+$/) {число целочисленное}
if ($var =~ /^[+-]?\d+$/) {число целочисленное со знаками плюс или минус впереди}
ctype_digit(PHP 4 >= 4.0.4, PHP 5)
ctype_digit -- Check for numeric character(s)
if (ereg("^[1-9]+[0-9]*$", $var)) { число }
А можно вот так:
is_int($имя_переменной) - проверяет, является ли переменная целым числом (тип integer);
is_float($имя_переменной) - проверяет, является ли переменная числом с плавающей точкой;
is_null($имя_переменной) - проверяет, равно ли значение переменной нулю;
is_numeric($имя_переменной) - проверяет, является ли переменная числовой строкой;
Такой вариант:
$a = '123';
if (is_int($a)) вернет false, тогда как это является числовой строкой.
Отпадает.Далее:
$b = '1e23';
if (is_numeric($b)) вернет true, тогда как это не совсем число.
Так же, отпадает.Регулярки использовать не хочется. Есть какие-то еще варианты?
С каких щей '1e23' -- не число?
Очень просто, если вот так:
if((int)$id == $id){true}
Для не строгого сравнения работает, Если же брать оператор "===" - то тут проверяется и тип - то есть для $id = '1'; - не прокатит
Хе, проверил - не сработало)), Но зато работает
if(strval((int)$id)==$id){true} и так
if(strval((int)$id)===$id){true}