WordPress等でサイトを構築していると、現在アクセスされているページのURLやパラメータを取得したい場合があります。PHPでは、そういったURLやパラメータを取得する事が出来ます。その方法はいくつかありますので詳しく解説いていきます。
PHPの$_SERVER変数を使用するとドメインやURLを取得する事ができ、$_GET変数でパラメータを個別に取得する事ができます。この$_SERVER変数・$_GET変数を使った使用例としていくつか紹介いたします。
使用例では「https://cdg-blog.jp/php/index.html?parameter=abc」というURLから情報を取得する事を想定しています。
ドメイン以下のパスを取得
$_SERVER変数を使用し、パスの情報「REQUEST_URI」を取得します。
<?php
echo $_SERVER['REQUEST_URI'];
// 実行結果:/php/index.html?parameter=abc
?>
ドメイン(ホスト名)の取得
$_SERVER変数を使用し、ドメイン(ホスト名)の情報「HTTP_HOST」を取得します。
<?php
echo $_SERVER['HTTP_HOST'];
// 実行結果:cdg-blog.jp
?>
プロトコルの取得
$_SERVER変数を使用し、プロトコルの情報「HTTPS」を取得します。
httpでのアクセスだとNULL、httpsでのアクセスだとonが返ってきます。
<?php
echo $_SERVER['HTTPS'];
// 実行結果:on
?>
上記の取得した情報を使い、httpかhttpsを表示するようにします。
下記では、if文の省略型で$_SERVER[‘HTTPS’]が空かどうか条件分岐しています。
<?php
echo (empty($_SERVER['HTTPS']) ? 'http' : 'https');
// 実行結果:https
?>
現在のURLの取得
$_SERVER変数を使用し、現在のURLの情報を取得します。
先ほどまでの、プロトコル + ドメイン(ホスト名) + ドメイン以下のパス の情報を組み合わせて表示しています。
<?php
echo (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
// 実行結果:https://cdg-blog.jp/php/index.html?parameter=abc
?>
取得したURLからパラメータを除く
上記で取得した現在のURLにはパラメータも入っています。
このパラメータが必要ない場合も多いので、パラメータをstrtok関数を使用しURLの「?」以降を除去します。
<?php
$url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$url = strtok($url, '?');
echo $url;
// 実行結果:https://cdg-blog.jp/php/index.html
?>
パラメータの取得
$_SERVER変数を使用し、現在のパラメータの情報「QUERY_STRING」を取得します。
$_SERVER[‘QUERY_STRING’]を使用する事でパラメータのキーと値を取得します。
<?php
echo $_SERVER['QUERY_STRING'];
// 実行結果:parameter=abc
?>
パラメータの値だけを取得する
パラメータの値のみを取得したい場合は下記のように$_GET変数でキーを指定して取得する方法があります。
<?php
$parameter= $_GET['parameter'];
echo 'パラメータの値:' . $parameter;
// 実行結果:パラメータの値:abc
?>
さいごに
いかがでしたでしょうか。
PHPでのURL情報の取得は使用する事がありますので、ぜひ覚えておいてください。また、Javascriptとの連携で使用できる幅も広がりますので、後日解説していきたいと思います。