如何在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
相关产品推荐
相关产品推荐

