получение URL для работы с или без подвыражения - PullRequest
0 голосов
/ 11 марта 2012

я пытаюсь переписать URL как

page.php? Сортировать = 66 & поиска = s & категория = 2,3,4 и архив = июнь и страница = 3

до

страница сортировка-1-поиск (s) -category-1,2,3-архив (июнь) -page3

но дело в том, что каждое из этих подвыражений мое или не может присутствовать в URL каждый раз, когда вызывается эта страница, поэтому мне пришлось помещать каждое из них в "()?" поэтому регулярное выражение работает с ними или без них

^page
(-sort-([0-9]*))?     
(-search\(([a-z]*)\))? 
(-category-([0-9][,]?*))? 

............. вы поняли

теперь проблема заключается в переписывании режима, который рассматривает каждое из этих подвыражений в скобках как фактическую переменную

(-sort-([0-9]*))?  this is how mode rewrite interpret this  => $1 = -sort-66  ,  $2 = 66 

поэтому для каждого подвыражения я получил 2 группы захвата, и это больше 10 для ссылки с 5-6 переменными и в режиме перезаписи есть предел 9 совпадений

есть ли замена для "()?"

1 Ответ

0 голосов
/ 11 марта 2012

Должен признать, что некоторые части вашего вопроса меня немного смущают, поэтому я заранее прошу прощения, если мой ответ совершенно не соответствует действительности. , , но это звучит как то, что вам нужно, это группа без захвата. Это:

(...)

соответствует ... и создает группу захвата (то, что вы называете «переменной»); это:

(?:...)

просто соответствует ..., без создания группы захвата. Поэтому полезно, если все, что вы хотите сделать, это сгруппировать подвыражение, не сохраняя все его содержимое для использования в качестве $1.

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