|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.05.2012, 14:41 | #1 |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 316
|
Организация роутинга, регулярные выражения
Добрый день коллеги.
Есть функция роутинга, хочу к ней прицепить регулярные выражения. Например чтото типа этого. Код:
Мой вариант(без регулярок): Код:
PHP код:
PHP код:
PHP код:
А надо както зделать чтобы в конфиге можно было писать регулярки, ну как я выше показал. |
02.05.2012, 22:42 | #2 |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 316
|
Че никто не подскажет?
|
07.05.2012, 17:28 | #3 |
Форумчанин
Регистрация: 02.07.2011
Сообщений: 144
|
а не проще
Код:
|
07.05.2012, 18:22 | #4 |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 316
|
Причем тут эксплойд? эксплойд проверит прописаны ли этот роут в конфиге?
Не все так просто. И на выходе уже должен быть результат - или реально существующий контролер, или альтернативный контролер (ну например для cms). И оно какимто макаром должно по маске проверить. например прислали page_1 и оно должно запустить экшн page и передать ему id = 1 Я же об этом присалЭ, смотрите Zend'a |
07.05.2012, 21:07 | #5 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Так а в чем конкретно проблема?
Там нет ничего особо сложного: - прописываем в конфиге регулярку (шаблон) - 'housing_(\d+)\.html' - проверяем URL на соответствие этому шаблону - preg_match('#housing_(\d+)\.html#', $url_part) - если соответствует, и содержит регулярки - выбираем совпадения в массив - preg_match_all('#housing_(\d+)\.htm l#', $url_part, $matches) - формируем переменные из найденных совпадений - и передаем в action Примеров реализации полно - посмотреть можно в любом фреймворке. |
08.05.2012, 14:18 | #6 |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 316
|
вы редлагаете форичем перебирать весь массив и искать в нем совпадения прегмачем? уто же уйма времени
|
08.05.2012, 14:50 | #7 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Цитата:
"весь массив" - это сколько элементов? Сомневаюсь, что прям огромное количество. "уйма времени" - это с чего бы? Есть замеры какие-то? Пробовали реализовать? Показывайте код в таком случае - померяем вместе! Тема висит неделю - а никакого нового кода не видно. |
|
08.05.2012, 15:19 | #8 |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 316
|
Ну както так:
PHP код:
Код:
|
08.05.2012, 16:15 | #9 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Параметры перепутаны - у вас паттерн в $c['route'] находится, и сравнивать с ним вы должны $url.
После проверки - находите совпадения при помощи preg_match_all - и формируйте из этих совпадений переменные для передачи в соответствующий action. Когда это все будет реализовано - проверяйте время выполнения и потребляемые ресурсы (Xdebug например). И тогда уже делайте выводы - приемлем ли этот вариант для вас. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Регулярные выражения в F# | Лёличка | Общие вопросы .NET | 1 | 18.01.2012 20:15 |
Регулярные выражения C# | Дупло | Помощь студентам | 4 | 28.09.2011 17:19 |
регулярные выражения | CodeNOT | PHP | 2 | 23.09.2011 12:11 |
Регулярные выражения | ololo-schoolboy | PHP | 2 | 15.05.2011 13:03 |
Регулярные выражения | ACE Valery | PHP | 5 | 14.10.2009 11:37 |