@lexstile

Как правильно организовать замену по регулярному выражению?

Есть такой код:
$route = "letter/{page:[а-яё]{1,2}}/detail/{page:\d+}";
$route = preg_replace('/{([a-z]+):(.+)}/ui', '(?P<\1>\2)', $route);
var_dump($route);
$route = '#^'.$route.'$#u';
var_dump($route);
$url = "letter/вв/detail/2";

var_dump(preg_match($route, $url));

Результат:
string(49) "letter/(?P<page>[а-яё]{1,2}}/detail/{page:\d+)"
string(54) "#^letter/(?P<page>[а-яё]{1,2}}/detail/{page:\d+)$#u"
int(0)

Как получить такой выхлоп:
# ..............................
# возможно, можно обойтись одним ?P
string(54) "#^letter/(?P<page>[а-яё]{1,2})/detail/(?P<page>\d+)$#u"
int(1)
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
DevMan
@DevMan
$route = preg_replace('/{([a-z]+):(.*}|.*)}/ui', '(?P<\1>\2)', $route);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Wanted. Санкт-Петербург
До 450 000 ₽
Wanted. Санкт-Петербург
До 120 000 ₽
ФАЙВДЖЕН Москва
от 250 000 ₽
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект