и так, очередной вопрос...
мой сайт весь на ЧПУ. то есть все ссылки вида mysite.ru/категория/подкатегория.
значение "подкатегория" может быть 2-х видов.
либо число от 1 и далее (потому что есть несколько страниц), либо текст вида "форум_программистов_пхп".
мне надо написать if который проверит это значение и если там число сделает одно, если текст - другое.
все дело в том что GET-переменные являются стрингом, даже если там число.
я попробовал сделать так:
if(settype($_GET[q], "integer") > 0) { }
settype($_GET[q], "integer") превращает строку в 0 а число оставляет числом.
но тогда значение $_GET[q], если это строка, онулируется.
как это реализовать нормально?
Спустя 3 часа, 13 минут, 59 секунд (10.03.2010 - 01:45) FatCat написал(а):
if( intval($_GET['q']) == $_GET['q'] )
{
// q - число
}
А кстати, если не число, а "имя файла" - у него же в конце обязано быть .html наверное?
Это тоже можно проверять:
if( substr($_GET['q'],-5) == ".html" )
{
// Последние 5 символов q - .html
}
Спустя 6 минут, 10 секунд (10.03.2010 - 01:51) FatCat написал(а):
Теперь перемешиваем, взбиваем омлет:
if( intval($_GET['q']) == $_GET['q'] )
{
// q - число
}
elseif( substr($_GET['q'],-5) == ".html" )
{
// Последние 5 символов q - .html
}
else
{
// Совсем фигню какую-то запросили
@header("HTTP/1.0 404 Not Found");
@header("HTTP/1.1 404 Not Found");
echo "Рисуем 404-ю";
exit();
}
Спустя 21 час, 2 минуты, 24 секунды (10.03.2010 - 22:54) catov написал(а):
Интересно что нам покажет
var_dump(intval($_GET['q']) == $_GET['q']);
Спустя 13 часов, 37 минут, 21 секунда (11.03.2010 - 12:31) MatrixGod написал(а):
что-то вы все загнули... зачем такие тяжелые функции писать?
я уже написал, и все очень просто!
если $text стринг то if дает этой переменной значение 0.
соответственно это меньше 1.
вот и все...
я уже написал, и все очень просто!
if($text < 1) { }
если $text стринг то if дает этой переменной значение 0.
соответственно это меньше 1.
вот и все...
Спустя 2 часа, 14 минут, 52 секунды (11.03.2010 - 14:46) FatCat написал(а):
Цитата (MatrixGod @ 11.03.2010 - 13:31) |
если $text стринг то if дает этой переменной значение 0. |
Если $_GET['q'] имеет значение 127.0 что произойдет?
Нет уж, если нужны цельночисленные значения, оптимально через intval...
Спустя 6 часов, 33 минуты, 33 секунды (11.03.2010 - 21:20) catov написал(а):
FatCat
if( intval($_GET['q']) == $_GET['q'] ) это условие будет true если $_GET['q']="форум_программистов_пхп"
if( intval($_GET['q']) == $_GET['q'] ) это условие будет true если $_GET['q']="форум_программистов_пхп"
Спустя 2 дня, 3 часа, 45 минут, 44 секунды (14.03.2010 - 01:05) Night User написал(а):
if ($_GET['q'] == (string)(int)$_GET['q'])
или
if ($_GET['q'] == (string)intval($_GET['q']))
так попробуйте
или
if ($_GET['q'] == (string)intval($_GET['q']))
так попробуйте