路由中uri slug的codeigniter正则表达式

Posted

技术标签:

【中文标题】路由中uri slug的codeigniter正则表达式【英文标题】:codeigniter regular expression for uri slug in routes 【发布时间】:2012-08-08 08:01:55 【问题描述】:

我想从控制器 my_controller 调用一个函数,将两个参数传递给 some_method:第一个参数是 slug(即 some-website-slug);第二,一个数字。这就是我正在尝试的:

$route['my_controller/([a-z0-9]+(-[a-z0-9]+)*)/(:num)'] = "my_controller/some_method/$1/$2";

问题是,它总是传入“-slug”(即 slug 字符串的最后一部分)而不是数字。所以例如与

base_url/my_controller/some-uri-slug/2

它将传入“-slug”而不是数字 2。正则表达式有问题还是 CI 有问题?

【问题讨论】:

试试$3 而不是$2 酷,如果您想标记为正确,我将其作为答案发布。 您可以使用 rubular.com 来测试您的表达方式。 【参考方案1】:

你的正则表达式有两对(),所以(:num)实际上是$3而不是$2

【讨论】:

以上是关于路由中uri slug的codeigniter正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

如何在CodeIgniter中设置动态路由以使用slug?

025.CI4框架CodeIgniter, URI路由功能之在Routes中添加分组路由

CodeIgniter URI 路由(动态,多语言)

Codeigniter 路由正则表达式 - 匹配除 'admin' 之外的任何字符串

无法访问codeigniter控制器中的uri段

在 codeigniter 中使用 slug