我正在使用CodeIgniter 4 RC3。
我有一个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中的其他行为,但是如何获取它以单个变量提供整个永久链接?