2013-09-17 3 views
0

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

$f->addRoute("/note/$1/edit/$2", "/note/edit/$1"); 

и что это говорит маршрутизатор, что для данной строки как /note/2/edit/some/non/sense/url конвертировать в /note/edit/2 как я могу это сделать !?

Я работаю над этим часами, но я не мог найти никакого регулярного выражения для этого!

Я хотел бы получить любую помощь здесь.

+1

Как мы можем узнать что-нибудь о вашей собственной структуре маршрутизатора? В общем, специальные случаи должны храниться где-то и указывать правила маршрута исключения для некоторого маршрутизатора (это может быть config/DB или даже непосредственно переданный массив) –

+1

Я считаю, что вам не нужно знать о моей структуре маршрутизатора! все, что я прошу, - это преобразовать строку типа «/ note/$ 1/edit/$ 2» в «/ note/edit/$ 1», которая является вопросом, свободным от структуры, и для получения информации о моей структуре маршрутизатора см. https: // github. com/dariushha/zinux – dariush

ответ

0
preg_replace('|^/note/(\d+)/edit/.*$|', '/note/edit/$1', '/note/2/edit/some/non/sense/url'); 

В принципе, вы должны быть осторожны о нескольких вещах:

  • Вы не хотите использовать «/» в качестве регулярных выражений разделителя, если вы не хотите, чтобы избежать каждый «/» в вашем regex, поэтому я использовал '|' выше
  • Я использовал \ d +, который подразумевает «любую цифру», если у вас есть значения без цифр, вы можете использовать [^ /] +, что означает «все, что не является косой чертой»
+0

Спасибо, это решение полностью помогло ... – dariush

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