CodeIgniter ユーザガイド 日本語版 Version 1.6.3


URI クラス

URI クラスは、URI文字列から情報を取り出すのに役立つメソッドを提供しています。また、URI ルーティングを利用している場合、再ルーティングされたあとのセグメントについての情報を取り出すことができます。

Note:このクラスは、システムで自動的に初期化されるので、手動で初期化する必要はありません。

$this->uri->segment(n)

特定のセグメントを取り出すことができます。ここでの n は取り出したいセグメント番号になります。セグメントは左から順に番号がつけられています。たとえば、完全なURLが次のようなものだった場合:

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

セグメント番号は次のようになります:

  1. news
  2. local
  3. metro
  4. crime_is_up

このメソッドは、初期状態では、セグメントが存在しない場合にFALSE (ブール値) を返します。第2引数はオプションで、セグメントが存在しなかった場合のデフォルト値をセットすることができます。たとえば、以下では、失敗したときに0を返すよう、このメソッドに通知しています:

$product_id = $this->uri->segment(3, 0);

このようにすれば、次のようなコードを書かなくて済みます:

if ($this->uri->segment(3) === FALSE)
{
    $product_id = 0;
}
else
{
    $product_id = $this->uri->segment(3);
}

$this->uri->rsegment(n)

このメソッドは、CodeIgniterのURI ルーティング機能を使っている場合にできる再ルートされた後のURIの特定のセグメントを取得することを除いて、先のメソッドと同じものです。

$this->uri->slash_segment(n)

このメソッドはまた、第2引数で指定した方法に従って、セグメントの末尾/先頭にスラッシュを追加すること以外は、$this->uri->segment() メソッドと同じものです。第2引数が指定されなかった場合、末尾にスラッシュを付加します。例:

$this->uri->slash_segment(3);
$this->uri->slash_segment(3, 'leading');
$this->uri->slash_segment(3, 'both');

それぞれ次の値を返します:

  1. segment/
  2. /segment
  3. /segment/

$this->uri->slash_rsegment(n)

このメソッドは、CodeIgniterのURI ルーティング機能を使っている場合にできる再ルートされた後のURIの特定のセグメントにスラッシュを追加することを除いて、先のメソッドと同じものです。

$this->uri->uri_to_assoc(n)

このメソッドは、URIセグメントを キー/値 ペアの連想配列に変換します。次のようなURIがあるとします:

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

このメソッドを使うと、次の例のように、URIが連想配列に変換されます:

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

メソッドの第1引数で、オフセットを設定できます。通常は第1、第2セグメントは、コントローラ/メソッドになっているので、デフォルトでは 3 に設定されています。例:

$array = $this->uri->uri_to_assoc(3);

echo $array['name'];

第2引数では、デフォルトのキー名をセットできます。こうすることで、URIに存在しない場合でも、返される配列には、常に期待される添字が含まれることになります。例:

$default = array('name', 'gender', 'location', 'type', 'sort');

$array = $this->uri->uri_to_assoc(3, $default);

もともとURIに値が含まれない場合、配列の添字はその名前にセットされ、値には、FALSEがセットされます。

最後に、キーが指定されているにもかかわらず、対応する値が見つからなかった場合 (URIセグメント数が奇数だった場合)、値はFALSE (ブール値) にセットされます。

$this->uri->ruri_to_assoc(n)

このメソッドは、CodeIgniterのURI ルーティング機能を使っている場合にできる再ルートされた後のURIを使って連想配列に変換することを除いて、先のメソッドと同じものです。

$this->uri->assoc_to_uri()

連想配列を入力とし、URI文字列をそこから生成します。配列のキーがURL文字列に含まれます。例:

$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()

完全なURIをもとにして、URL文字列を返します。例えば、次のような完全URLだった場合:

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

このメソッドは次の文字列を返します:

/news/local/345

$this->uri->ruri_string()

このメソッドは、CodeIgniterのURI ルーティング機能を使っている場合にできる再ルートされた後のURIを返すこと除いて、先のメソッドと同じものです。

$this->uri->total_segments()

合計のセグメント数を返します。

$this->uri->total_rsegments()

このメソッドは、CodeIgniterのURI ルーティング機能を使っている場合にできる再ルートされた後のURIのセグメント総数を返すこと除いて、先のメソッドと同じものです。

$this->uri->segment_array()

URIセグメントからなる配列を返します。例:

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

foreach ($segs as $segment)
{
    echo $segment;
    echo '<br />';
}

$this->uri->rsegment_array()

このメソッドは、CodeIgniterのURI ルーティング機能を使っている場合にできる再ルートされた後のURIセグメントからなる配列を返すこと除いて、先のメソッドと同じものです。