@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)
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
DevMan
@DevMan
$route = preg_replace('/{([a-z]+):(.*}|.*)}/ui', '(?P<\1>\2)', $route);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы