Я следующую структуру 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
Помогло бы это упростить? Сделайте '$ parts = split ("/", $ url)' и переключитесь на части. – Halcyon
@ Halcyon Похоже, что 'split' заменяется на' preg_split', http://php.net/manual/en/migration53.deprecated.php. Нет никакого регулярного выражения, хотя я думаю, что 'explode' будет работать. – chris85
@ chris85 вы правы, 'взрывать' правильно. 'split' для JavaScript: P – Halcyon