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


URLヘルパ

URLヘルパのファイルには、URLを処理するのを支援する関数が含まれます。

ヘルパのロード

このヘルパは次のコードでロードできます:

$this->load->helper('url');

次の関数が利用可能です:

site_url()

設定ファイルで指定されているサイトのURLを返します。index.php ファイル (または、設定ファイルで設定しているユーザサイトの index_page ) がURLに追加され、この関数に渡されたURIセグメントが追加されます。

ローカルの(サイト内の)URLを生成する必要がある時は、いつもこの関数を使うようお勧めします、この関数を使うと、URLが変更になった時でも、移植性が高まります。

オプションで、セグメントを文字列または配列としてこの関数に渡すことができます。下記は文字列での例です:

echo site_url("news/local/123");

上の例では、次のようなものが返されます: http://example.com/index.php/news/local/123

次は、配列でセグメントを渡す例です:

$segments = array('news', 'local', '123');

echo site_url($segments);

base_url()

設定ファイルで指定されているサイトのベースURLを返します。例:

echo base_url();

current_url()

現在表示されているページの完全なURL (セグメントを含む) を返します。

uri_string()

この関数が呼び出されたページのURIセグメントを返します。例えば、URLが以下のようなものであれば:

http://some-site.com/blog/comments/123

この関数は次のような値を返します:

/blog/comments/123

index_page()

設定ファイルで指定されているサイトの "index" ページを返します。例:

echo index_page();

anchor()

サイトのURLにもとづいて、標準のHTMLアンカーリンクを生成します:

<a href="http://example.com">Click Here</a>

このコードには、3つのオプションの引数があります:

anchor(uri segments, text, attributes)

第1引数は、URLに追加したいセグメントを指定します。上の site_url() 関数のように、文字列または、配列でセグメントを指定します。

Note:  アプリケーション内部のリンクを生成するときは、ベースURL (http://...) を含まないようにしてください。設定ファイルで指定されている情報から、ベースURLは自動的に追加されます。URLに追加したいURIセグメントだけを含めるようにしてください。

第2引数は、リンクに指定したいテキストになります。空のままにしておくと、URLが使用されます。

第3引数はリンクタグに追加したい属性のリストを指定できます。属性は、文字列または、連想配列で指定します。

いくつか例を挙げます:

echo anchor('news/local/123', 'title="ニュース"');

上のコードは次のHTMLを生成します: <a href="http://example.com/index.php/news/local/123" title="ニュース">ニュース</a>

echo anchor('news/local/123', 'ニュース', array('title' => 'ベストニュース!'));

上のコードは次のHTMLを生成します: <a href="http://example.com/index.php/news/local/123" title="べストニュース!">ニュース</a>

anchor_popup()

新しいウィンドでURLを開くこと以外は、anchor() 関数とほとんど同じです。ウィンドウの開き方をコントロールするために、JavaScriptのwindowオブジェクトの属性(プロパティ)を第3引数で指定できます。第3引数が設定されていない場合は、ユーザのブラウザの設定により新しいウィンドウを開きます。下記は、属性を指定する場合の例です:

$atts = array(
              'width'      => '800',
              'height'     => '600',
              'scrollbars' => 'yes',
              'status'     => 'yes',
              'resizable'  => 'yes',
              'screenx'    => '0',
              'screeny'    => '0'
            );

echo anchor_popup('news/local/123', 'Click Me!', $atts);

Note: 上の属性は、この関数の初期値になりますので、これと異なる値にしたい箇所を設定するだけで構いません。すべての属性に初期値を使用する場合は、単に第3引数に空の配列を渡してください:

echo anchor_popup('news/local/123', 'Click Me!', array());

mailto()

標準のHTMLメールリンクを作成します。使用例:

echo mailto('me@my-site.com', 'コンタクトするにはここをクリック');

上の anchor() 関数のように、第3引数で、属性を指定できます。

safe_mailto()

この関数は、スパムロボットにメールアドレスが収集されてしまうのを防ぐため、メールアドレスのリンクをJavaScriptで書き出すために、序数を使った難読化バージョンのmailtoタグを書き出します。この点を除いて、上の関数と同じです。

auto_link()

自動で、文字列に含まれるURLとメールアドレスをリンクに変換します。例:

$string = auto_link($string);

第2引数は、URLとメールアドレスのどちらを変換するか、あるいは両方を変換するかを指定します。指定しない場合、デフォルトでは、両方を変換するようになっています。Emailリンクは上にあるように safe_mailto() を使ってエンコードされます。

URLのみを変換する場合は:

$string = auto_link($string, 'url');

メールアドレスのみを変換する場合は:

$string = auto_link($string, 'email');

第3引数は、リンクを新しいウィンドウで開くかどうかを指定します。値は、TRUE または FALSE (ブール値) になります:

$string = auto_link($string, 'both', TRUE);

url_title()

入力として文字列をとり、人間にわかりやすいURL文字列を生成します。これは、たとえば、ブログを作成していたとして、その中で、記事のタイトルをURLに使いたいときなどに役立ちます。例:

$title = "What's wrong with CSS?";

$url_title = url_title($title);

// 次のコードを生成します: whats-wrong-with-css

第2引数で、単語の区切りを決めます。初期状態では、ダッシュ ( "-" ) が使用されます。次のオプションが選べます: dash または underscore:

$title = "What's wrong with CSS?";

$url_title = url_title($title, 'underscore');

// 次のコードを生成します: Whats_wrong_with_CSS

第3引数で、文字列を強制的に小文字に変換するかどうかを決めます。デフォルトでは変換されません。次のオプション(ブール値)が選べます: TRUE/FALSE:

$title = "What's wrong with CSS?";

$url_title = url_title($title, 'underscore', TRUE);

// 次のコードを生成します: whats_wrong_with_CSS

prep_url()

この関数を使うと、URLに http:// がない場合にそれが追加されます。次のように、URLの文字列をこの関数に渡します:

$url = "example.com";

$url = prep_url($url);

redirect()

指定したサイト内のURIに対して "ヘッダ リダイレクト" します。このヘルパの他の関数のように、この関数はサイト内のURLに対してリダイレクトするよう設計されています。完全なサイトのURLを指定する必要はなく 単純に、移動させたいコントローラへのURIセグメントを指定します。この関数は、設定ファイルの値にもとづいてURLを構築します。

オプションの第2引数で "location" (デフォルト)を使う方法か "refresh" を使う方法かを選べます。Location は高速ですが、Windowsサーバでは、時々問題を起こします。オプションの第3引数では送りたい HTTP Response Code を指定することができます。例えば検索エンジンが起こした301リダイレクトを送ることができます。デフォルトの Response Code は302です。第3引数は"location"だけで使え、"refresh"では使えません。例です:

if ($logged_in == FALSE)
{
     redirect('/login/form/', 'refresh');
}

// 301 リダイレクトの場合
redirect('/article/13', 'location', 301);
}

Note: この関数はサーバのヘッダを利用するので、動作させるにはブラウザに何かを出力する前に、この関数を使う必要があります。
Note: とても細かいヘッダーのコントロールを行う場合は、出力クラスの set_header() メソッドを使うべきです。