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

更新日: 2016年2月25日

実行時間: 0.0406

URLヘルパー

 URLヘルパーは「 system/helper/url_helper.php 」ファイルで、WebサイトのURL情報を取得したり、 HTMLタグで利用するURLリンク文字列を生成する関数や、リダイレクトを制御する関数が定義されています。

URLヘルパーのロード

 「 CI_Loader 」クラスの「 helper() 」メソッドでロードします。

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

URLヘルパーの関数

site_url($uri = '')

 「CI_Config」クラスの「site_url()」 メソッドのラッパー関数です。


base_url($uri = '')

 「CI_Config」クラスの「base_url()」 メソッドのラッパー関数です。


current_url()

 アクセスされた完全なURLを返します。

    echo current_url();
    // http://www.ci-guide.info/practical/helper/url

uri_string()

 「CI_URI」クラスの「uri_string()」 メソッドのラッパー関数です。

    echo uri_string();
    // /practical/helper/url/

index_page()

 「application/config/config.php」設定ファイルの「index_page」設定項目に設定されている値を返します。

    echo index_page();
    //

anchor($uri = '', $title = '', $attributes = '')

 引数で指定された情報を元に、HTMLのアンカータグ「<a href="">」を生成して返します。

 第一引数は、完全なURL文字列、または、URIパス文字列を指定します。
 URIパスを分割した配列で渡すことも可能です。

 第二引数には、アンカータグで囲まれるタイトル文字列を指定します。

 第三引数には、アンカータグに付加する属性の文字列、または、連想配列を指定します。

    echo anchor('/practical/helper/url/');
    // <a href="http://www.ci-guide.info/practical/helper/url">
    // http://www.ci-guide.info/practical/helper/url</a>

    echo anchor('/practical/helper/url/', 'URLヘルパー');
    // <a href="http://www.ci-guide.info/practical/helper/url">URLヘルパー</a>
    echo anchor(
        '/practical/helper/url/',
        'URLヘルパー',
        'class="link" id="url_helper"'
    );
    // <a href="http://www.ci-guide.info/practical/helper/url"
    // class="link" id="url_helper">URLヘルパー</a>
    $attr = array( 'class' => 'link', 'id' => 'url_helper');
    echo anchor('/practical/helper/url/', 'URLヘルパー', $attr);
    // <a href="http://www.ci-guide.info/practical/helper/url"
    // class="link" id="url_helper">URLヘルパー</a>

anchor_popup($uri = '', $title = '', $attributes = FALSE)

 引数で指定された情報を元に、HTMLのアンカータグ「<a href="">」を生成しますが、 JavaScriptの「window.open()」メソッドによるポップアップリンクとなります。

 第一引数は、完全なURL文字列、または、URIパス文字列を指定します。
 URIパスを分割した配列で渡すことも可能です。

 第二引数には、アンカータグで囲まれるタイトル文字列を指定します。

 第三引数に、FALSEを指定するとJavaScriptの「window.open()」メソッド の第三引数がせっとされず「window.open(url, '_blank')」となります。
 また、アンカータグに付加する属性情報の連想配列、及び、以下に示す「window.open()」メソッドの
第三引数にセットする属性情報の連想配列を指定することができます。

項目 デフォルト 説明
width 800 POPUPウィンドウの横幅
height 600 POPUPウィンドウの高さ
scrollbars yes スクロールバーの有無
status yes ステータスバーの有無
resizable yes サイズ変更の可否
screenx 0 表示位置
デスクトップ左からの座標
screeny 0 表示位置
デスクトップ上からの座標

  • 第三引数指定なし
  • echo anchor_popup(
        '/practical/helper/url/',
        'URLヘルパー',
    );
    // <a href='javascript:void(0);'
    // onclick="window.open(
    //     'http://www.ci-guide.info/practical/helper/url',
    //     '_blank'
    // );">URLヘルパー</a>

  • 属性情報指定
  • $attr = array(
        'width' => '1000',
        'height' => '450',
        'scrollbars' => 'no',
        'status' => 'no',
        'resizable' => 'no',
        'screenx' => '200',
        'class' => 'link_popup',
    );
    echo anchor_popup(
        '/practical/helper/url/',
        'URLヘルパー',
        $attr
    );
    // <a href='javascript:void(0);'
    //     onclick="window.open(
    //     'http://www.ci-guide.info/practical/helper/url',
    //     '_blank',
    //     'width=1000,height=450,scrollbars=no,status=no,
    //     resizable=no,screenx=200,screeny=0'
    // );" class="link_popup">URLヘルパー</a>

mailto($email, $title = '', $attributes = '')

 引数で指定された情報を元に、HTMLの(mailto:)アンカータグ「<a href="mailto:">」を生成して返します。

 第一引数は、「mailto:」に続ける文字列を指定します。

 第二引数には、アンカータグで囲まれるタイトル文字列を指定します。

 第三引数には、アンカータグに付加する属性の文字列、または、連想配列を指定します。

    echo mailto('pilot@ci-guide.info?subject=Hellow', 'メール');
    // <a href="mailto:pilot@ci-guide.info?subject=Hello">メール</a>

safe_mailto($email, $title = '', $attributes = '')

 利用方法は、「mailto()」関数と同様ですが、JavaScriptによる「mailto:」リンクを生成します。
これにより、スパマーによるメールアドレスの取得を困難にすることができます。

    /*
    <script type="text/javascript">
      //<![CDATA[
        var l=new Array();
        l[0]='>';l[1]='a';l[2]='/';l[3]='<';l[4]='|12523';l[5]='|12540';
        l[6]='|12513';l[7]='>';l[8]='"';l[9]='|111';l[10]='|108';l[11]='|108';
        l[12]='|101';l[13]='|72';l[14]='|61';l[15]='|116';l[16]='|99';l[17]='|101';
        l[18]='|106';l[19]='|98';l[20]='|117';l[21]='|115';l[22]='|63';l[23]='|111';
        l[24]='|102';l[25]='|110';l[26]='|105';l[27]='|46';l[28]='|101';l[29]='|100';
        l[30]='|105';l[31]='|117';l[32]='|103';l[33]='|45';l[34]='|105';l[35]='|99';
        l[36]='|64';l[37]='|116';l[38]='|111';l[39]='|108';l[40]='|105';l[41]='|112';
        l[42]=':';l[43]='o';l[44]='t';l[45]='l';l[46]='i';l[47]='a';l[48]='m';
        l[49]='"';l[50]='=';l[51]='f';l[52]='e';l[53]='r';l[54]='h';l[55]=' ';
        l[56]='a';l[57]='<';
        for (var i = l.length-1; i >= 0; i=i-1){
            if (l[i].substring(0, 1) == '|')
                document.write("&#"+unescape(l[i].substring(1))+";");
            else
                document.write(unescape(l[i]));
        }
      //]]>
    </script>
    */

auto_link($str, $type = 'both', $popup = FALSE)

 第一引数で指定された文字列から、自動でURLリンク、または、メールリンクを生成する文字列を抽出して HTMLの「<a></a>」タグに変換して返します。
 ブログ投稿記事などから自動でリンクを生成するのに便利です。
mailtoリンクは、safe_mailto()関数によるJavaScriptコードで生成されます。

 第二引数には、URLリンクのみを対象とするか、メールリンクのみを対象とするか、または、両方を対象とするか 「url」、「email」、「both」の3つの中から指定します。

 第三引数に、TRUEを指定するとURLリンクの「target=」属性が「_blank」となります。

    echo auto_link('TOPページはこちら(http://www.ci-guide.info)<br>
                    メールはこちら(pilot@ci-guide.info)');
    
    TOPページはこちら(http://www.ci-guide.info)
    メールはこちら()

    echo auto_link('TOPページはこちら(http://www.ci-guide.info)<br>
                    メールはこちら(pilot@ci-guide.info)', 'url');
    
    TOPページはこちら(http://www.ci-guide.info)
    メールはこちら(pilot@ci-guide.info)

    echo auto_link('TOPページはこちら(http://www.ci-guide.info)<br>
                    メールはこちら(pilot@ci-guide.info)', 'email');
    
    TOPページはこちら(http://www.ci-guide.info)
    メールはこちら()

    echo auto_link('TOPページはこちら(http://www.ci-guide.info)<br>
                    メールはこちら(pilot@ci-guide.info)', 'both', TRUE);
    
    TOPページはこちら(http://www.ci-guide.info)
    メールはこちら()

prep_url($str = '')

 引数に指定された文字列の前に、「http://」を付加して返します。

    echo prep_url('www.ci-guide.info');
    // http://www.ci-guide.info

url_title($str, $separator = 'dash', $lowercase = FALSE)

 第一引数で指定された文字列から、単語間のスペースを「-」ハイフン、または、「_」アンダスコアに置き換えて返します。

 第二引数に、文字列「dash」を指定すると、区切り文字は「-」ハイフンとなり、「dash」以外を指定すると 「_」アンダスコアとなります。

 第三引数に、TRUEを指定すると、第一引数で指定された文字列を全て小文字に変換します。

    echo url_title('PHP Framework CodeIgniter');
    // PHP-Framework-CodeIgniter
    echo url_title('PHP Framework CodeIgniter', '');
    // PHP_Framework_CodeIgniter
    echo url_title('PHP Framework CodeIgniter', '', TRUE);
    // php_framework_codeigniter

redirect($uri = '', $method = 'location', $http_response_code = 302)

 HTTPレスポンスヘッダにリダイレクト用のヘッダを含め、クライアントからのリクエストをリダイレクトさせます。

 第一引数には、リダイレクト先のURLを指定します。

 第二引数に、文字列「refresh」を指定すると、「Refresh:0;url=""」をリダイレクトヘッダとしてヘッダ出力します。 デフォルトでは、「Location: 」をリダイレクトヘッダとして出力します。

 第三引数は、「Location: 」リダイレクトヘッダのリダイレクトコードを指定します。
デフォルトは「302」です。

    redirect('/practical/helper/');
    redirect('/practical/helper/', 301);

 リダイレクトに「Refresh:」ヘッダを利用することはお勧めできません。