以下のようなURLがあるとする。
"http://example.com/123/test.html"
で、ファイル(test.html)が実行されている階層のディレクトリ名(フォルダ名)を取得したい場合、PHPコードをどう書けばよいのか?
答えは以下。
basename(dirname($_SERVER['SCRIPT_NAME']));
これで、「123」という返り値が取得できる。
ネット上で調べると以下の回答をよく見かけるけど、
basename(dirname($_SERVER['REQUEST_URI']));
これだと、
http://example.com/123/
のように、ファイル名がない時に、(123の部分を起点としてしまうので)返り値が無しになってしまうので注意が必要。
あと、
split("/",$_SERVER[SCRIPT_NAME]);
だと、PHP5.3以降エラーが出る(正規表現を使うので、微々たるものだけどスピードが落ちると思うし)のでおすすめしない。
それと、サーバーによっては上記コードでうまくいかない事もある(?)みたいなので、その時は最悪以下のコードで良いと思われ。
array_pop(explode("/",dirname($_SERVER["SCRIPT_NAME"])));
コメント