Использование intval.

WP

^_^
Использование intval.

Простая ситуация, человек обращается к http://site/news/1, строка '1' перед попадаем в запрос вроде SELECT * FROM `news` WHERE `id` = 1 пройдет через intval, и превратится в число 1. Если обратиться к http://site/news/1blablabla эффект естественно такой же, он получает новость, хотя я думаю, тут должен быть 404 Not Found.
Как лучше сделать проверку? Первое что пришло на ум - if (!preg_match('~^\-?\d+$~x',$var)) {return 0;}, но это роскошь, поэтому думаю лучше будет if (strval(intval($var)) != $var) {return 0;}
Спасибо.
 

Фанат

oncle terrible
Команда форума
о господи.
однин дурак вопрос задаст - другие отвечают.
не нужна ему проверка на число!
его совсем другое интересует.
вопрос читайте.
 

0xHH

Новичок
Фанат
его интересует того, чего в ТЗ нет. Сначала ТЗ предоставьте, что должно быть, а потом и программировать надо. :)
 

Фанат

oncle terrible
Команда форума
там всё написано.
не умеешь читать - не берись
 

Krishna

Продался Java
о господи.
однин дурак вопрос задаст - другие отвечают.
не нужна ему проверка на число!
его совсем другое интересует.
вопрос читайте.
ок, мастеркласс от Фаната в студию. Что же его интересует? Мне вот почему то кажется что мой ответ его полностью удовлетворит.
 

0xHH

Новичок
Фанат
Естественно не умею читать.

Сначала сделаю проверку на isInt, потом отправлю её в select, и если mysql_query отдаст false, отправлю на header 404.

Если не isInt, отправлю header 404.

Какие-то проблемы? ^-)
 

Фанат

oncle terrible
Команда форума
ладно-ладно, я уже и сам сообразил, что мускуль тоже приведёт к инту.
так что последний алгоритм самый правильный.

только для первой проверки я бы предложил ctype_digit()
 

Krishna

Продался Java
Для тех, кто в танке, чем is_numeric не подходит?

-~{}~ 08.07.06 12:26:

З.Ы.
Я уже пива напилсо, могу тормозить, не бейте ногами.
 

0xHH

Новичок
PHP:
<?PHP
echo is_numeric("453453");
echo is_numeric("+453453");
echo is_numeric("-453453");
?>
 

WP

^_^
Фанат
Я газ) Ну введет, и что?

-~{}~ 08.07.06 14:01:

а, понял что ты имел в виду... :D

p.s. сделал как и хотел изначально.
 

denver

?>Скриптер
Что меня совсем растроило в is_numeric:
PHP:
var_dump(is_numeric('34e3');
// true
для меня было новостью что 100e2 это тоже число, в мане я такого не видал.
 
Сверху