URI 類別

URI 類別提供方法來幫助你解析 URI 字串資訊。 假如你使用了 URI 導向,也可以解析路由重導後的區段。

Note

這個類別會被系統自動初始化,所以不必手動處理。

類別參考

class CI_URI
segment($n[, $no_result = NULL])
Parameters:
  • $n (int) – 區段號碼
  • $no_result (mixed) – 如果區段沒找到時,要回傳的值
Returns:

區段的值,若不存在則回傳 $no_result 的值

Return type:

mixed

用來取得特定的區段。n 是你想取得的區段號碼。 區段是按由左到右的順序排列。 例如,假設你的 URL 網址如下:

http://example.com/index.php/news/local/metro/crime_is_up

區段號碼會是:

  1. news
  2. local
  3. metro
  4. 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])
Parameters:
  • $n (int) – 區段號碼
  • $no_result (mixed) – 如果區段沒找到時,要回傳的值
Returns:

路由重導後的區段的值,若不存在則回傳 $no_result 的值

Return type:

mixed

這個方法與 segment() 相同, 但是取得的區段是經由路由重導後的區段, 路由重導是 CodeIgniter 的 URI Routing 提供的功能。

slash_segment($n[, $where = 'trailing'])
Parameters:
  • $n (int) – 區段號碼
  • $where (string) – 加入斜線的地方(‘trailing’ 或 ‘leading’)
Returns:

區段存在時回傳區段的值,並在前/後方加上了斜線,當區段不存在時回傳斜線

Return type:

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'])
Parameters:
  • $n (int) – 區段號碼
  • $where (string) – 加入斜線的地方(‘trailing’ 或 ‘leading’)
Returns:

路由重導後的區段的值,並在前/後方加上了斜線,當區段不存在時回傳斜線

Return type:

string

這個方法與 slash_segment() 相同, 但是取得的區段是經由路由重導後的區段, 路由重導是 CodeIgniter 的 URI Routing 提供的功能。

uri_to_assoc([$n = 3[, $default = array()]])
Parameters:
  • $n (int) – 區段號碼
  • $default (array) – 預設值
Returns:

URI 區段關聯式陣列

Return type:

array

這個方法讓你將 URI 區段轉換成關聯式陣列。 例如下方的 URI:

index.php/user/search/name/joe/location/UK/gender/male

使用這個方法會將 URI 轉換為如下的關聯式陣列:

[array]
(
        'name'          => 'joe'
        'location'      => 'UK'
        'gender'        => 'male'
)

第一個參數可以讓你決定位移量,預設位移量是 3 , 因為前兩個區段通常是 controller 與方法。 範例:

$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。

最後,如果某個鍵對應的值沒有被找到(例如區段數量為單數個時), 其值將被設定為 NULL.

ruri_to_assoc([$n = 3[, $default = array()]])
Parameters:
  • $n (int) – 區段號碼
  • $default (array) – 預設值
Returns:

路由重導後的 URI 區段關聯式陣列

Return type:

array

這個方法與 uri_to_assoc() 相等, 但是回傳的關聯式陣列是基於路由重導後的 URI。 路由重導是 CodeIgniter 的 URI Routing 所提供的功能。

assoc_to_uri($array)
Parameters:
  • $array (array) – 輸入的關聯式陣列
Returns:

URI 字串

Return type:

string

使用輸入的關聯式陣列來產生 URI 字串。 陣列鍵值將會被包含在字串內,範例:

$array = array('product' => 'shoes', 'size' => 'large', 'color' => 'red');
$str = $this->uri->assoc_to_uri($array);

// 產生: product/shoes/size/large/color/red
uri_string()
Returns:URI 字串
Return type:string

回傳完整的 URI 字串,例如當這是你的完整網址時:

http://example.com/index.php/news/local/345

這個方法將會回傳:

news/local/345
ruri_string()
Returns:路由重導後的 URI 字串
Return type:string

這個方法與 uri_string() 相同。 但是回傳的是路由重導後的 URI 字串。 路由重導是 CodeIgniter 的 URI Routing 所提供的功能。

total_segments()
Returns:URI 區段的數量
Return type:int

回傳區段的總數量。

total_rsegments()
Returns:路由重導後的 URI 區段數量
Return type:int

這個方法與 total_segments() 相同。 但是回傳的是路由重導後的 URI 區段數量。 路由重導是 CodeIgniter 的 URI Routing 所提供的功能。

segment_array()
Returns:URI 區段陣列
Return type:array

回傳一個包含了 URI 區段的陣列,範例:

$segs = $this->uri->segment_array();

foreach ($segs as $segment)
{
        echo $segment;
        echo '<br />';
}
rsegment_array()
Returns:路由重導後的 URI 區段陣列
Return type:array

這個方法與 segment_array() 相同。 但是回傳的是路由重導後的 URI 區段陣列。 路由重導是 CodeIgniter 的 URI Routing 所提供的功能。