Проблема с регулярными выражениями и маршрутами в Codeigniter - PullRequest
0 голосов
/ 17 ноября 2011

У меня проблема с использованием маршрутов в Codeigniter и моих выражений

У меня есть следующий URL (для страницы предложений):

www.site.com/company/offers/view/newsarticle/219

и маршрут, подобный следующему:

$route['([a-z0-9_-]+)/offers/view/([a-z0-9]+)/([0-9]+)'] = "offers/view/$1/$2/$3";

У меня есть вышеуказанная настройка маршрута, поэтому, если нужно перейти к контроллеру предложений, функции просмотра и передать 3 параметра (company, newsarticle, 219)

Работает все отлично, однако, если в 4-м сегменте uri содержится и '-', он ломается и дает мне страницу 404 например,

Это работает

www.site.com/company/offers/view/newsarticle/219

Но это не

www.site.com/company/offers/view/news-article/219

Может кто-нибудь объяснить, что я сделал не так с выражениями? Спасибо

1 Ответ

2 голосов
/ 17 ноября 2011

Ваше выражение не допускает дефис символа

([a-z0-9_-]+)/offers/view/([a-z0-9]+)/([0-9]+)

Должно быть

([a-z0-9_-]+)/offers/view/([a-z0-9\-]+)/([0-9]+)

Обратите внимание на \- в [a-z0-9\-].Символ \ экранируется от дефиса, сообщая механизму выражений, что это не оператор диапазона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...