parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

AEM 29.08.2007 20:19

Краткое описание того, что я делал году в 2003 (PHP, версия движка PDS v.2).

В нем я реализовал чистоту адресов, т. е. минимальная передача get-параметров (только в искл. случаях). Не куда не смотрел, просто додумался. Сначала было гадко, затем лучше :-).

В итоге: в базе ищутся макс. пути от корня, если у нас адрес /about/events/2007/12/3415/, то по порядку в базе ищутся about, about/events, естественно, about/events/2007 в базе нет, так как это уже параметр -- значит берем второй.

Соответсвенно, ищем имя модуля того раздела у которого base_path идентичен about/events. Если есть конец, в нашем случае 2007/12/3415, в папке с именем модуля находим файл url.preg (если он есть, иначе 404).

Содержание url.preg в данном случае
year=/^(\d+)$/
month=/^(\d+)\/(\d+)$/
year/month/issue=/^(\d+)\/(\d+)\/(\d+)$/
затем парсим, и устанавливаем псевдо-get параметры (если в адресной строке уже есть шняги типа /about/events/2007/12/3415/?year=2003, то переписываем их).

А затем проверяем наличие года, в нем месяца и события и др. вещи. Обрабатываем 404, если что не так, или собираем буфер данными. Ну, и так далее...

Стоит приложить чуточку времени и ума, и не стоит терять время и по каждой мелочи тут спрашивать: научите, расскажите, покажите.