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

如何在CodeIgniter中获取URI参数值?附代码示例

在CodeIgniter中获取URI中的参数值

没问题,我来帮你搞定CodeIgniter里获取URI参数的事儿!先看你给出的示例URI:

http://website.com/accounts/school/index/fr_id/1/stateID/14683/school_name/BANGALORE INTERNATIONAL SCHOOL(UOL)/

方法一:使用uri_to_assoc()(推荐,更灵活)

你尝试用$this->uri->uri_to_assoc(4)的思路是完全正确的,这个方法能把URI中从指定段开始的键值对转换成关联数组,非常适合你这种参数以键/值形式排列的场景。

具体实现代码:

// 确保URI库已加载(CodeIgniter默认自动加载,若没加载可在config/autoload.php中添加'uri'到libraries数组)

// 从第4段开始解析键值对(因为前3段是accounts/school/index)
$uri_params = $this->uri->uri_to_assoc(4);

// 安全地获取各个参数值(避免键不存在时报错)
$fr_id = isset($uri_params['fr_id']) ? $uri_params['fr_id'] : '';
$stateID = isset($uri_params['stateID']) ? $uri_params['stateID'] : '';
$school_name = isset($uri_params['school_name']) ? $uri_params['school_name'] : '';

// 可选:打印查看完整的参数数组
// print_r($uri_params);

解释一下:

  • uri_to_assoc(4)中的数字4表示从URI的第4个分段开始解析(CodeIgniter的URI分段从1开始计数,第4段就是fr_id)。
  • 这个方法会自动把相邻的两个分段配对成键=>值,比如第4段fr_id对应第5段1,第6段stateID对应第7段14683,以此类推。

方法二:使用segment()直接获取指定分段

如果你明确知道每个参数值所在的分段位置,也可以用segment()方法直接取值:

$fr_id = $this->uri->segment(5); // 第5段是fr_id对应的值1
$stateID = $this->uri->segment(7); // 第7段是stateID对应的值14683
$school_name = $this->uri->segment(9); // 第9段是school_name对应的值

不过这种方法的缺点是:如果URI中参数的顺序发生变化,你就得修改分段的数字,灵活性不如uri_to_assoc()。

注意事项

  • URI末尾的斜杠不会影响解析,CodeIgniter会自动忽略它。
  • 建议用isset()或empty()判断参数是否存在,避免因参数缺失导致的报错。

内容的提问来源于stack exchange,提问作者webdev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:45:06