The_Lars
@The_Lars

Объясните регулярное выражение?

Почти полный 0 в регулярках, но срочно нужно разобраться в данном примере.
Код
$uri = 'post/15';
$route = 'post/{id:\d+}';

$route = preg_replace('/{([a-z]+):([^\}]+)}/', '(?P<\1>\2)', $route);
$route = '#^'.$route.'$#';

if ( preg_match($route, $uri, $matches) ){
    print_r($matches);
}


Особенно не понимаю что делает (?P<\1>\2). Объясните, пожалуйста.
  • Вопрос задан
  • 131 просмотр
Решения вопроса 2
@krypt3r
preg_replace заменяет ту часть строки $route, что в фигурных скобках '{id:\d+}' на строку '(?P\d+)', которая представляет собой часть нового РВ. Переменная $route в результате станет такой: '#^post/(?P\d+)$#'
Далее переменная $uri = 'post/15' сопоставляется с этим шаблоном.
?P — именованная подмаска, которая позволит обращаться к значению $matches['id']
Короче, читайте доки
Ответ написан
Комментировать
mustang_shelby
@mustang_shelby
i like (*_metallica_*)
вот есть хорошая статья - в которой объясняется про регулярки
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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