PR

【PHP】index.htmlや引数を省いて自ページのURLを取得する方法

スポンサーリンク

パンくずリストの作成や各種ソーシャルボタンの作成等、自サイトの現在のURLをPHPで取得して活用する事は割と多いと思う。
でも、その取得アドレス中にindexファイル(index.phpやhtml)が勝手に挿入されたり、各種パラメーター(引数)がひっついてきて外すことができない状態になる事も同じように多いので、その都度解消方法をぐぐる必要性を無くすため、それぞれのパターンでのページURL取得方法を以下に覚書!

PHPで自ページのURLを取得

 

スポンサーリンク

ページURL取得方法

まず手段として、以下のスーパーグローバル変数(定義済み変数)を用いる。

$_SERVER["HTTP_HOST"] = ドメイン名取得(例:example.com)
$_SERVER["REQUEST_URI"] = 引数を含むドメイン以下を取得(例:/note/?u=aiu&k=eo) $_SERVER["SCRIPT_NAME"] = 引数を含まないドメイン以下を取得(例:/note/index.php)

※上記の変数の説明は、便宜上の説明で厳密には意味合いが違うので注意

以下、上記変数を用いて"$url”にページのURLを格納する例。

引数ありで自ページのURLを取得する

$url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];

引数なしで自ページのURLを取得する

$url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];

引数ありでindex.phpやindex.htmlがあれば省いて取得

$url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
//ファイル名がindex.phpかindex.htmlならば
if(basename($_SERVER["SCRIPT_NAME"]) == "index.php" || basename($_SERVER["SCRIPT_NAME"]) == "index.html"){
	//「/」を区切りとして$hogeに配列として格納
	$hoge = explode("/",$_SERVER["REQUEST_URI"]);
	//「?」を区切りとして配列$hoge2に、ファイル名と変数の2つ値を格納
	$hoge2 = explode("?",end($hoge));
	//ファイル名以外を$hoge3に格納
	for($i=0; $i<(count($hoge)-1); $i++){
		$hoge3 .= $hoge[$i]."/";
	}
	$url = "http://".$_SERVER["HTTP_HOST"].$hoge3.$hoge2[1];
}

引数なしでindex.phpやindex.htmlがあれば省いて取得

$url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
//ファイル名がindex.phpかindex.htmlならば
if(basename($url) == "index.php" || basename($url) == "index.html"){
	//「/」を区切りとして$hogeに配列として格納
	$hoge = explode("/",$_SERVER["SCRIPT_NAME"]);
	//ファイル名以外を$hoge2に格納
	for($i=0; $i<(count($hoge)-1); $i++){
		$hoge2 .= $hoge[$i]."/";
	}
	$url = "http://".$_SERVER["HTTP_HOST"].$hoge2;
}

コメント