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
區段號碼會是:
- 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])¶ 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');
回傳值:
- segment/
- /segment
- /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 所提供的功能。
-