# URI 类
URI 类用于帮助你从 URI 字符串中获取信息,如果你使用 URI 路由, 你也可以从路由后的 URI 中获取信息。
注解
该类由系统自己加载,无需手工加载。
* [类参考](http://codeigniter.org.cn/user_guide/libraries/uri.html#id1)
## [类参考](http://codeigniter.org.cn/user_guide/libraries/uri.html#id2)
classCI_URI
segment($n[, $no_result = NULL])
参数:
* **$n** (int) -- Segment index number
* **$no_result** (mixed) -- What to return if the searched segment is not found
返回: Segment value or $no_result value if not found
返回类型: mixed
用于从 URI 中获取指定段。参数 n 为你希望获取的段序号,URI 的段从左到右进行编号。 例如,如果你的完整 URL 是这样的:
~~~
http://example.com/index.php/news/local/metro/crime_is_up
~~~
那么你的每个分段如下:
~~~
#. news
#. local
#. metro
#. crime_is_up
~~~
第二个参数为可选的,默认为 NULL ,它用于设置当所请求的段不存在时的返回值。 例如,如下代码在失败时将返回数字 0
~~~
$product_id = $this->uri->segment(3, 0);
~~~
它可以避免你写出类似于下面这样的代码:
~~~
if ($this->uri->segment(3) === FALSE)
{
$product_id = 0;
}
else
{
$product_id = $this->uri->segment(3);
}
~~~
rsegment($n[, $no_result = NULL])
参数:
* **$n** (int) -- Segment index number
* **$no_result** (mixed) -- What to return if the searched segment is not found
返回: Routed segment value or $no_result value if not found
返回类型: mixed
当你使用 CodeIgniter 的 [URI 路由](http://codeigniter.org.cn/user_guide/general/routing.html) 功能时,该方法和 segment() 类似, 只是它用于从路由后的 URI 中获取指定段。
slash_segment($n[, $where = 'trailing'])
参数:
* **$n** (int) -- Segment index number
* **$where** (string) -- Where to add the slash ('trailing' or 'leading')
返回: Segment value, prepended/suffixed with a forward slash, or a slash if not found
返回类型: string
该方法和 segment() 类似,只是它会根据第二个参数在返回结果的前面或/和后面添加斜线。 如果第二个参数未设置,斜线会添加到后面。例如:
~~~
$this->uri->slash_segment(3);
$this->uri->slash_segment(3, 'leading');
$this->uri->slash_segment(3, 'both');
~~~
返回结果:
1. segment/
2. /segment
3. /segment/
slash_rsegment($n[, $where = 'trailing'])
参数:
* **$n** (int) -- Segment index number
* **$where** (string) -- Where to add the slash ('trailing' or 'leading')
返回: Routed segment value, prepended/suffixed with a forward slash, or a slash if not found
返回类型: string
当你使用 CodeIgniter 的 [URI 路由](http://codeigniter.org.cn/user_guide/general/routing.html) 功能时,该方法和 slash_segment() 类似, 只是它用于从路由后的 URI 返回结果的前面或/和后面添加斜线。
uri_to_assoc([$n = 3[, $default = array()]])
参数:
* **$n** (int) -- Segment index number
* **$default** (array) -- Default values
返回: Associative URI segments array
返回类型: array
该方法用于将 URI 的段转换为一个包含键值对的关联数组。如下 URI:
~~~
index.php/user/search/name/joe/location/UK/gender/male
~~~
使用这个方法你可以将 URI 转为如下的数组原型:
~~~
[array]
(
'name' => 'joe'
'location' => 'UK'
'gender' => 'male'
)
~~~
你可以通过第一个参数设置一个位移,默认值为 3 ,这是因为你的 URI 的前两段通常都是控制器和方法。 例如:
~~~
$array = $this->uri->uri_to_assoc(3);
echo $array['name'];
~~~
第二个参数用于设置默认的键名,这样即使 URI 中缺少某个键名,也能保证返回的数组中包含该索引。 例如:
~~~
$default = array('name', 'gender', 'location', 'type', 'sort');
$array = $this->uri->uri_to_assoc(3, $default);
~~~
如果某个你设置的默认键名在 URI 中不存在,数组中的该索引值将设置为 NULL 。
另外,如果 URI 中的某个键没有相应的值与之对应(例如 URI 的段数为奇数), 数组中的该索引值也将设置为 NULL 。
ruri_to_assoc([$n = 3[, $default = array()]])
参数:
* **$n** (int) -- Segment index number
* **$default** (array) -- Default values
返回: Associative routed URI segments array
返回类型: array
当你使用 CodeIgniter 的 [URI 路由](http://codeigniter.org.cn/user_guide/general/routing.html) 功能时,该方法和 uri_to_assoc() 类似, 只是它用于将路由后的 URI 的段转换为一个包含键值对的关联数组。
assoc_to_uri($array)
参数:
* **$array** (array) -- Input array of key/value pairs
返回: URI string
返回类型: string
根据输入的关联数组生成一个 URI 字符串,数组的键将包含在 URI 的字符串中。例如:
~~~
$array = array('product' => 'shoes', 'size' => 'large', 'color' => 'red');
$str = $this->uri->assoc_to_uri($array);
// Produces: product/shoes/size/large/color/red
~~~
uri_string()
返回: URI string
返回类型: string
返回一个相对的 URI 字符串,例如,如果你的完整 URL 为:
~~~
http://example.com/index.php/news/local/345
~~~
该方法返回:
~~~
news/local/345
~~~
ruri_string()
返回: Routed URI string
返回类型: string
当你使用 CodeIgniter 的 [URI 路由](http://codeigniter.org.cn/user_guide/general/routing.html) 功能时,该方法和 uri_string() 类似, 只是它用于返回路由后的 URI 。
total_segments()
返回: Count of URI segments
返回类型: int
返回 URI 的总段数。
total_rsegments()
返回: Count of routed URI segments
返回类型: int
当你使用 CodeIgniter 的 [URI 路由](http://codeigniter.org.cn/user_guide/general/routing.html) 功能时,该方法和 total_segments() 类似, 只是它用于返回路由后的 URI 的总段数。
segment_array()
返回: URI segments array
返回类型: array
返回 URI 所有的段组成的数组。例如:
~~~
$segs = $this->uri->segment_array();
foreach ($segs as $segment)
{
echo $segment;
echo '<br />';
}
~~~
rsegment_array()
返回: Routed URI segments array
返回类型: array
当你使用 CodeIgniter 的 [URI 路由](http://codeigniter.org.cn/user_guide/general/routing.html) 功能时,该方法和 segment_array() 类似, 只是它用于返回路由后的 URI 的所有的段组成的数组。
- 欢迎使用 CodeIgniter
- 安装说明
- 下载 CodeIgniter
- 安装说明
- 从老版本升级
- 疑难解答
- CodeIgniter 概览
- CodeIgniter 将从这里开始
- CodeIgniter 是什么?
- 支持特性
- 应用程序流程图
- 模型-视图-控制器
- 设计与架构目标
- 教程 - 内容提要
- 加载静态内容
- 读取新闻条目
- 创建新闻条目
- 结束语
- 常规主题
- CodeIgniter URL
- 控制器
- 保留名称
- 视图
- 模型
- 辅助函数
- 使用 CodeIgniter 类库
- 创建类库
- 使用 CodeIgniter 驱动器
- 创建驱动器
- 创建核心系统类
- 创建附属类
- 钩子 - 扩展框架核心
- 自动加载资源
- 公共函数
- 兼容性函数
- URI 路由
- 错误处理
- 网页缓存
- 程序分析
- 以 CLI 方式运行
- 管理你的应用程序
- 处理多环境
- 在视图文件中使用 PHP 替代语法
- 安全
- PHP 开发规范
- 类库参考
- 基准测试类
- 缓存驱动器
- 日历类
- 购物车类
- 配置类
- Email 类
- 加密类
- 加密类(新版)
- 文件上传类
- 表单验证类
- FTP 类
- 图像处理类
- 输入类
- Javascript 类
- 语言类
- 加载器类
- 迁移类
- 输出类
- 分页类
- 模板解析类
- 安全类
- Session 类
- HTML 表格类
- 引用通告类
- 排版类
- 单元测试类
- URI 类
- 用户代理类
- XML-RPC 与 XML-RPC 服务器类
- Zip 编码类
- 数据库参考
- 数据库快速入门: 示例代码
- 数据库配置
- 连接你的数据库
- 查询
- 生成查询结果
- 查询辅助函数
- 查询构造器类
- 事务
- 数据库元数据
- 自定义函数调用
- 数据库缓存类
- 数据库工厂类
- 数据库工具类
- 数据库驱动器参考
- 辅助函数参考
- 数组辅助函数
- 验证码辅助函数
- Cookie 辅助函数
- 日期辅助函数
- 目录辅助函数
- 下载辅助函数
- 邮件辅助函数
- 文件辅助函数
- 表单辅助函数
- HTML 辅助函数
- 语言辅助函数
- Inflector 辅助函数
- 数字辅助函数
- 路径辅助函数
- 安全辅助函数
- 表情辅助函数
- 字符串辅助函数
- 文本辅助函数
- 排版辅助函数
- URL 辅助函数
- XML 辅助函数
- 向 CodeIgniter 贡献你的力量