このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0075

CI_URI

 CI_URIクラスの機能のほとんどは、バックグラウンドで「CI_Router」クラス内で利用されます。
更に、クライアントからリクエストされるURIの情報及び、URIルーティング後のパス情報を取得する機能を ユーザに提供しています。

segment($n, $no_result = FALSE)

スラッシュ「/」で区切られたリクエストURIパス情報は左から第一セグメント・第二セグメントとそれぞれ第Nセグメントと呼びます。 このメソッドはリクエストURIパスのN番目のセグメント情報を取得します。

第一引数に取得したいセグメント番号を指定します。
第二引数には取得できなかった場合のデフォルト値を指定することができます。

  • リクエストURI
  • http://your.site/my_class/my_action/param/
  • 第三セグメント取得
  • $segment_3 = $this->uri->segment(3);
    echo $segment_3;
    // param
  • デフォルト指定
  • $segment_4 = $this->uri->segment(4, 'empty');
    echo $segment_4;
    // empty

rsegment($n, $no_result = FALSE)

 このメソッドは「CI_Router」クラスにより再URIルーティング後の URIパスからセグメント情報を取得します。  使い方は「segument()」メソッドと同じになります。

  • routes.php
  • $route['my_class/my_action/(:any)'] = 'my_class/another_action/data/$1';
  • リクエストURI
  • http://your.site/my_class/my_action/param/
  • 第三セグメント取得
  • $segment_3 = $this->uri->segment(3);
    echo $segment_3;
    // data

slash_segment($n, $where = 'trailing')
slash_rsegment($n, $where = 'trailing')

 「segment()」メソッドと同様にリクエストURIパスのセグメント情報を取得しますが、セグメント文字列の前、 後ろ、または前後両方に「/」スラッシュを付けて取得します。
「slash_segment()」はリクエストURIパスから、「slash_rsegment()」はURIルーティング後のパスから取得します。

第一引数にセグメント番号、第二引数にスラッシュを付ける場所を指定します。 スラッシュを付ける場所を指定する文字列は以下のようになります。

    • trailing
    • スラッシュを後ろに付けます。

    • leading
    • スラッシュを前に付けます。

    • 上記2つ以外の文字列
    • スラッシュを前後両方に付けます。

  • リクエストURI
  • http://your.site/my_class/my_action/param/
  • 第三セグメント取得
  • $segment_3 = $this->uri->slash_segment(3);
    echo $segment_3;
    //=> param/
    $segment_3 = $this->uri->slash_segment(3, 'leading');
    echo $segment_3;
    //=> /param
    $segment_3 = $this->uri->slash_segment(3, 'both');
    echo $segment_3;
    //=> /param/

segment_array()
rsegment_array() 一番上に戻る

 「segment_array()」はリクエストURIパスの各セグメントを分割して配列で返します。
「rsegment_array()」はURIルーティング後のパスを各セグメントに分割して配列で返します。

  • リクエストURI
  • http://your.site/my_class/my_action/param/
  • グメント取得
  • $segments = $this->uri->segment_array();
    print_r($segment);
    /*
    Array
    (
        [0] => my_class
        [1] => my_action
        [2] => param
    )
    */

total_segments()
total_rsegments() 一番上に戻る

 「total_segments()」はリクエストURIパスのセグメント数、「ruri_string()」はURIルーティング後のセグメント数を返します。

  • リクエストURI
  • http://your.site/my_class/my_action/param/
  • グメント数取得
  • $seg_count = $this->uri->total_segments();
    echo $seg_count;
    //=> 3

uri_string()
ruri_string() 一番上に戻る

「uri_string()」はリクエストURIのパス文字列、「ruri_string()」はURIルーティング後のパス文字列を返します。

  • リクエストURI
  • http://your.site/my_class/my_action/param/
  • URIパス文字列取得
  • $uri_path = $this->uri->uri_string();
    echo $uri_path;
    //=> /my_class/my_action/param/

uri_to_assoc($n = 3, $default = array())
ruri_to_assoc($n = 3, $default = array()) 一番上に戻る

「uri_to_assoc()」はリクエストURIパス、「ruri_to_assoc()」はルーティング後のパスから セグメント情報を連想配列として返します。
第一引数に取得するセグメントの開始番号を指定します。 指定した開始番号から連想配列の「インデックスキー」「値」の順番で取得していきます。

  • リクエストURI
  • http://your.site/my_class/my_action/key_1/data_1/key_2/data_2/
  • 連想配列で取得
  • $segments = $this->uri->uri_to_assoc();
    pring_r($segments);
    /*
    Array
    (
        [key_1] => data_1
        [key_2] => data_2
    )
    */

assoc_to_uri($array) 一番上に戻る

 連想配列から、URIパス文字列を生成して返します。

  • 連想配列
  • $uri_arr = array(
        'key_1' => 'data_1',
        'key_2' => 'data_2',
    )
  • URIパス生成
  • $uri_path = $this->uri->assoc_to_uri($uri_arr);
    echo $uri_path;
    //=> key_1/data_1/key_2/data_2