この記事は、最後の更新から431日を超えています。

【PHP】現在のページのURLを色々な形式で取得する関数

2018.1.14 / 2018.2.14 update

【PHP】現在のページのURLを色々な形式で取得する関数

概要

wordpressなどのPHPを用いたwebサイトで、現在表示しているページのURLを取得したい場合があります。
そんな時に使える、3パターンのURLが取得できる関数を公開します。

※追記(2018年2月14日)

実務で使ってて気がついたのですが、1階層分しか取得できないっぽいです。
利用される際は注意してください。
階層が深くなっても使えるようにしたものをまたアップしたいと思います。

関数

関数は以下のとおりです。



<?php
function now_url( $prm = 0 ){
    $return_url = "";
    $scheme = empty($_SERVER['HTTPS']) ? 'http://' : 'https://'; // httpとhttpsの検知

    // 渡された引数によって返す値を変える
    switch( $prm ){
        case 1:     // URLのクエリまで(クエリの?の前に/が入る)
            $return_url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
            break;
        case 2:     // ドメインまで(最後に/は付かない)
            $return_url = $_SERVER['HTTP_HOST'];
            break;
        default:    // 現在のファイル名まで(URLにてファイル名が省略されていても非省略に変換される)
            $return_url = $_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
            break;
    }

    $return_url = str_replace("index.php","",$return_url);  // index.phpを除去
    $return_url = str_replace("//","/",$return_url);        // スラッシュが重複した部分を直す
    return $scheme.$return_url;                             // スキームを追加して返す
}
?>

使い方

基本的な使い方は以下のとおりです。



<?php
    // 表示する場合
    echo now_url();

    // 変数に代入する場合
    $url = now_url();
?>

引数によって以下のように返す値が変わります。
※「http://example.com/?id=20」のURLで利用する場合



<?php
// 表示:http://example.com/index.php
echo now_url().'<br>';

// 表示:http://example.com/?id=20
echo now_url(1).'<br>';

// 表示:http://example.com
echo now_url(2).'<br>';
?>


関連記事