Я использую 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, но как мне получить полную постоянную ссылку в одной переменной?