@artmart999

Что означает это регулярное выражение php?

Добрый день. Подскажите пожалуйста что означает данное выражение в коде?

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

ссылка на код: https://github.com/php-youtube/php-blog/blob/maste..., метод add()
в данном классе в конструкторе загружаются пути отсюда: https://github.com/php-youtube/php-blog/blob/maste...
и проводятся через регулярку, чтобы можно было работать с url в формате admin/posts/3

Ткните пожалуйста как эта регулярка помогает нам получить вот эту цифру в конце url и засовывает ее в маршрут.

Заранее огромное спасибо :)
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
@bastik961
если кратко (в рамках url admin/posts/3), то:
$route = preg_replace('/{([a-z]+):([^\}]+)}/', '(?P<\1>\2)', $route);
заменяет в роуте конструкцию типа {page:\d+}на (?P<page>\d+) - (именованная группа), далее этот паттерн (#^admin/posts/(?P<page>\d+)$#) применяется к url в 28 строке, в итоге в $matches будет нужный тебе параметр из роута: 'page' => 3, который далее передается в нужный контроллер, прописанный в твоем роуте. Аналогично и для других роутов, отличаются только имена параметров
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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