URI 類
URI類提供了幫助你分割URI字符串的函數(shù)集合。如果你使用URI路由功能,那么你就可以通過分段來重新分發(fā)地址欄信息。
注意: URI類會(huì)被系統(tǒng)自動(dòng)初始化,不必手動(dòng)啟用該功能。
$this->uri->segment(n)
它允許你重新分割一個(gè)詳細(xì)的URI分段。 n 為你想要得到的段數(shù)。 分割數(shù)按照從左至右的順序編排。 例如,如果你完整的URL的地址如下:
http://example.com/index.php/news/local/metro/crime_is_up
每個(gè)URI分段的數(shù)字編號(hào)為:
- news
- local
- metro
- crime_is_up
默認(rèn)情況下URI沒有分段那么該函數(shù)返回 FALSE(布爾值)。如果分段信息丟失,Segment函數(shù)還有第二個(gè)參數(shù)用來設(shè)置你的默認(rèn)值。 例如,這樣設(shè)置后,當(dāng)發(fā)生錯(cuò)誤時(shí),函數(shù)就會(huì)返回?cái)?shù)字“0”。
$product_id = $this->uri->segment(3, 0);
如果沒有該參數(shù)你的代碼必須得像下面這樣寫:
if ($this->uri->segment(3) === FALSE)
{
????$product_id = 0;
}
else
{
????$product_id = $this->uri->segment(3);
}
$this->uri->rsegment(n)
這個(gè)函數(shù)和上面的函數(shù)基本功能一樣,不同點(diǎn)在于它允許你在開啟CodeIgniter的URI路由功能時(shí)進(jìn)行詳細(xì)分割并重新分發(fā)URI信息
$this->uri->slash_segment(n)
這個(gè)函數(shù)幾乎和$this->uri->segment()一模一樣,不過它可以通過第二個(gè)參數(shù)(" ","leading","both")給返回的URI參數(shù)加上“/”線, 如果不使用該參數(shù),就會(huì)在后面增加斜畫線。例如:
$this->uri->slash_segment(3);
$this->uri->slash_segment(3, 'leading');
$this->uri->slash_segment(3, 'both');
返回:
- segment/
- /segment
- /segment/
$this->uri->slash_rsegment(n)
這個(gè)函數(shù)功能同上面的函數(shù),不同點(diǎn)在于它允許你在開啟CodeIgniter的URI路由功能時(shí)進(jìn)行詳細(xì)分割并重新分發(fā)URI信息并可以增加斜線“/”。
$this->uri->uri_to_assoc(n)
你可以使用這個(gè)函數(shù)把每個(gè)分段信息以"標(biāo)識(shí)字"=>"具體值"的形式存放在一個(gè)聯(lián)合數(shù)組Array()里。 注意這個(gè)URI:
index.php/user/search/name/joe/location/UK/gender/male
使用這個(gè)函數(shù)你可以把URI以如下原型翻轉(zhuǎn)到聯(lián)合數(shù)組中:
[array]
(
????'name' => 'joe'
????'location' => 'UK'
????'gender' => 'male'
)
函數(shù)第一個(gè)參數(shù)可以設(shè)置偏移量,默認(rèn)設(shè)置為3,因?yàn)橐话闱闆r下你的URI包含 控制器名 / 函數(shù)名 作為第一個(gè)和第二個(gè)分段。 例如:
$array = $this->uri->uri_to_assoc(3);
echo $array['name'];
第二個(gè)參數(shù)可以用來設(shè)置"標(biāo)識(shí)字",這樣返回的數(shù)組總會(huì)包含索引里的標(biāo)識(shí)字,甚至在丟失URI的情況下也是如此。例如:
$default = array('name', 'gender', 'location', 'type', 'sort');
$array = $this->uri->uri_to_assoc(3, $default);
如果URI不包含對(duì)應(yīng)你所給標(biāo)識(shí)字的具體值時(shí),該索引的值會(huì)被設(shè)置為"FALSE"。
最后,如果相應(yīng)的具體值找不到給定的標(biāo)識(shí)字時(shí)(若URI段數(shù)為是一個(gè)單數(shù)時(shí))具體值也會(huì)被設(shè)置為"FALSE"(布爾值)
$this->uri->ruri_to_assoc(n)
這個(gè)函數(shù)和上面的函數(shù)基本功能一樣,不同點(diǎn)在于它允許你在開啟CodeIgniter的URI路由功能時(shí)把URI信息分割并翻轉(zhuǎn)到聯(lián)合數(shù)組中去。
$this->uri->assoc_to_uri()
這個(gè)函數(shù)的功能和uri_to_assoc的功能找相反,它把數(shù)組里的信息翻轉(zhuǎn)成URI地址,例如:
$array = array('product' => 'shoes', 'size' => 'large', 'color' => 'red');
$str = $this->uri->assoc_to_uri($array);
// 輸出: product/shoes/size/large/color/red
$this->uri->uri_string()
返回一個(gè)包含完整URI信息的字符串。例如,假設(shè)以下為你的完整URL:
http://example.com/index.php/news/local/345
函數(shù)將返回如下字符串:
/news/local/345
$this->uri->ruri_string()
這個(gè)函數(shù)和上面的函數(shù)基本功能一樣,不同點(diǎn)在于它允許你在開啟CodeIgniter的URI路由功能時(shí)把URI轉(zhuǎn)換成對(duì)應(yīng)的字符串。
$this->uri->total_segments()
返回總的URI的段數(shù)
$this->uri->total_rsegments()
這個(gè)函數(shù)和上面的函數(shù)基本功能一樣,不同點(diǎn)在于它允許你在開啟CodeIgniter的URI路由功能時(shí)返回URI的段數(shù)。
$this->uri->segment_array()
返回一個(gè)包含URI分段的數(shù)組。例如:
$segs = $this->uri->segment_array();
foreach ($segs as $segment)
{
????echo $segment;
????echo '<br />';
}
$this->uri->rsegment_array()
這個(gè)函數(shù)和上面的函數(shù)基本功能一樣,不同點(diǎn)在于它允許你在開啟 CodeIgniter 的 URI 路由功能時(shí)返回 URI 的數(shù)組。
?