2015-06-24 3 views
0

Я следующую структуру URL:Regex матч необязательный параметр третьего URL

http://sitename.com/subdir/category-name/subcategory-name/article 

Вот некоторые примеры ссылок:

http://127.0.0.1/ocko/works/videos/ 
http://127.0.0.1/ocko/texts/stuff/ 
http://127.0.0.1/ocko/works/teletubbies/oint/ 
http://127.0.0.1/ocko/works/teletubbies/oint/ 

Категория может быть либо works или texts и article не является обязательным.

Это мое регулярное выражение:

(works|texts)(\/.+)(?:(\/.+))\/ 

Проблема заключается в том, что он соответствует только последние 2 примера, как третий параметр (article) является обязательным, даже если я писал (?:(\/.+)) для последней части.

Я пытаюсь rerout вещи за кулисами, чтобы что-то вроде:

http://127.0.0.1/ocko/category/works/videos/ 

И я построения строки, как: http://127.0.0.1/ocko/category/ $ 1 $ 2 $ 3

+1

Помогло бы это упростить? Сделайте '$ parts = split ("/", $ url)' и переключитесь на части. – Halcyon

+0

@ Halcyon Похоже, что 'split' заменяется на' preg_split', http://php.net/manual/en/migration53.deprecated.php. Нет никакого регулярного выражения, хотя я думаю, что 'explode' будет работать. – chris85

+0

@ chris85 вы правы, 'взрывать' правильно. 'split' для JavaScript: P – Halcyon

ответ

Смежные вопросы