Не используйте косую черту в качестве разделителя захвата - PullRequest
1 голос
/ 31 октября 2019

Я использую CodeIgniter 4 RC 3.

У меня есть структура URL, которая берет год-месяц-день плюс кусок статьи для его идентификации, например:

/2019/10/20/hello-world

Итак, регулярное выражение, которое я пытался написать для моего маршрута:

$routes->get('/(\d{4}\/\d{2}\/\d{2}\/([a-z\-]+))', 'Pages::article/$1/$2');

Я хочу получить всю постоянную ссылку (year/month/day/slug) в одном аргументе итогда просто слизняк в другом. Но, похоже, это не работает (по крайней мере, по умолчанию).

Что происходит, так это то, что большие круглые скобки (которые охватывают все, начиная со второго символа до конца) всегда принимают косые черты внутри него как разделители. Таким образом, сам слэш не становится частью захваченного результата, а вместо этого разделяет захваченные результаты на 3 части.

Так что вместо того, что я хочу, это

  • $1, содержащий /2019/10/20/hello-world
  • $2, содержащий hello-world

Я получаю:

  • $1, содержащий 2019
  • $2, содержащий 10
  • $3, содержащий 2019
  • $4, содержащий hello-world
  • , а затем $5 - моя вторая пара скобок, которая содержит hello-world еще раз.

Я не знаю, является ли это поведением CodeIgniter или чем-то еще в PHP, но как мне получить полную постоянную ссылку в одной переменной?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...