You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CodeIgniter中获取路由URL中的参数?(含重写路由场景)

在CodeIgniter中获取路由映射里的参数100

嘿,这个问题我太熟悉了!在CodeIgniter框架下,当你设置了$route['about-us']='sub-directory/article/read/100'这种静态路由后,想要拿到末尾的100参数,有几种简单可靠的方式:

1. 直接从控制器方法参数获取(最推荐)

这是CodeIgniter设计的标准用法——路由里的参数会自动传递给对应控制器方法的参数。你只需要在sub-directory/article.php的read方法里定义参数即可:

class Article extends CI_Controller {
    public function read($id) {
        // 这里的$id就是你要的100
        echo $id;
    }
}

这种方式最直观,也符合框架的MVC设计逻辑,优先用它准没错。

2. 使用URI类的rsegment方法

如果因为某些场景(比如在控制器之外的类或助手中)没法直接用方法参数,你可以借助CI的URI类,用rsegment方法获取路由解析后的原始URI段:

// 获取路由映射后的第4个URI段(索引从1开始)
$id = $this->uri->rsegment(4);

这里用rsegment而不是普通的segment是关键:segment是针对用户访问的URL(也就是about-us),而rsegment会读取路由映射后的真实路径sub-directory/article/read/100,所以不会受用户输入URL的影响,更可靠。

3. 从Router类的rsegments属性读取

你已经在使用$this->router对象了,它的rsegments数组里就存着路由解析后的所有段信息:

// 同样索引从1开始,第4个元素就是参数100
$id = $this->router->rsegments[4];

这种方式和第二种本质是一样的,只是直接从Router对象里取数据,适合已经在操作$this->router的场景。

内容的提问来源于stack exchange,提问作者One-ear Hamster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:25:24