2016-08-09 3 views
0

я использую следующее регулярное выражениеPhp Regular Expression Отладка

/^(?P<prefix>admin{1})?[\/]?(?P<controller>[a-z-]+)[\/]?(?P<method>[a-z-]+)[\/]?(?P<parameters>[a-z0-9-\/]+(?=\/page))?[\/]?page\/(?P<page>[0-9]+)?$/i

Я хочу, чтобы найти совпадение, используя следующие:

controller/method/parameters/another/something

controller = controller, method = method, parameters = parameters/another/something

, но если прилагаемый аргумент

controller/method/parameter/another/something/page/1

он должен вернуть:

controller = controller, method = method, parameters = parameter/another/something, page = 1

я только получаю матч, если я поставить page/1 аргумент. любая помощь в отладке, что не так с моим регулярным выражением?

+1

Вы пробовали это веб-сервис для отладки регулярных выражений? (Https://regex101.com) – kyasbal

+0

да, я все еще используя его для отладки регулярного выражения с утра. https://regex101.com/r/sI7qP2/3 –

ответ

0

Внешний вид не может быть факультативным, а также ваш параметр regex слишком жадный. Вы можете решить эту проблему, переключив позиции page и parameters, если page не является обязательным параметром!

(и дополнительно вам не нужны квадратные скобки, сбежавшая косая черта!)