Xwab
Форумыnavigate_nextНебольшие вопросы по PHP/MySQL

Проблема с роутером
Сообщения
mastes

Пишу небольшой роутер
Вот код http://bit.ly/V9k7H2
Я не знаю как реализовать выборку параметров из адреса для скрипта. Подскажыте как сделать

25 Дек 2012, 14:44
SL_NeKrOmAnT

Еще раз и по-русски? Что надо?

25 Дек 2012, 14:50
mastes

Да я вроде понятно написал

25 Дек 2012, 14:52
SL_NeKrOmAnT

Да и вообще советую пользоваться хоть какой-то фильтрацией $this->_module = $this->routs[1];

Я лично делал ее через preg_match , тоесть в модуле только буквы были и цифры, в id только цифры и т.д
добавлено спустя 15 секунд:
не понятно

25 Дек 2012, 14:53
mastes

Фильтрацию доделаю, мне основу нужно сделать и я не знаю как из адреса достать параметры(id=121212) если адрес должен иметь вид site.ru/cotroller/function/param1/param2
добавлено спустя 58 секунд:
может дальше адрес резать или как лучше сделать?

25 Дек 2012, 14:57
SL_NeKrOmAnT

Ну реж, но тут уже без preg_match не обойдется.
Т.к вместо action может быть допустим тот же id.
-----------------------------
Я так сделал себе:
[php:1:23cfd7ac10]
/* Роутер + Основные переменные */
$route = preg_replace('/\0/s', '', $_GET['route']);
$array = explode(";",$route);
if($array[0] AND preg_match('#^([a-zA-Z]+)$#', $array[0]))
{
$modul = htmlspecialchars($array[0]);
}
if($array[1] AND preg_match('#^([0-9]+)$#', $array[1]))
{
$id = abs(intval($array[1]));
}
if($array[2])
{
if(preg_match('#^([a-zA-Z]+)$#', $array[2]))
{
$act = htmlspecialchars($array[2]);
}
elseif(preg_match('#^([0-9]+)$#', $array[2]))
{
$page = abs(intval($array[2]));
}
}
if($array[3] AND preg_match('#^([0-9]+)$#', $array[3]))
{
$page = abs(intval($array[3]));
}
[/php:1:23cfd7ac10]
добавлено спустя 2 минуты:
Но косячки будут конечно, допустим если у меня будет модуль и номер страницы, то $page=$id; так как вторым ключем идет id  Ну я с этим смирюсь.
Всё таки проще, чем делать 100500 правил mod rewrite

25 Дек 2012, 15:21
Okula

mastes, используй именованные вложенные шаблоны в регулярных выражениях и вопрос "как достать тот или иной эллемент" отпадёт сам собой  .

25 Дек 2012, 16:38
mastes

Okula, как это? Можно пример?

25 Дек 2012, 18:12
Okula

[php:1:d07aa238d2]preg_match('~(?P<id>\d+)/(?P<param>[a-z]+)~i', $str, $info);
var_dump($info['id'], $info['param']);[/php:1:d07aa238d2]
Учи регулярки.

25 Дек 2012, 18:17
mastes

http://php.net/manual/ru/regexp.reference.subpatterns.php это?

25 Дек 2012, 18:18
Ответить на тему