こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPで、該当ファイルの一つ上のディレクトリ名を取得したいのですが、そ

PHPで、該当ファイルの一つ上のディレクトリ名を取得したいのですが、そのような関数はございますでしょうか?

例えば、該当のページが
http://example.com/abc/top.php
だった場合、
「abc」を文字列として取得したいです。

自分のファイル名を取得する時はbasenameという関数を使う所までは
分かったのですが、一つ上のディレクトリ名を取得する関数を探す事が
出来ませんでした。ご教授頂けると大変助かります。

宜しくお願い致します。

投稿日時 - 2010-03-14 09:14:34

QNo.5750487

困ってます

質問者が選んだベストアンサー

既に #1さんの 回答したとおりですが、以下を実行してみて 結果を比較してみてください。

<?
//$url = $_SERVER[PHP_SELF];
$url = "http://example.com/abc/top.php";

print basename($url);print "<hr>";
print dirname($url);print "<hr>";
print basename(dirname($url));print "<hr>";
print_r(pathinfo($url));print "<hr>";
?>

投稿日時 - 2010-03-14 13:13:07

お礼

取得出来ました!ありがとうございました!

投稿日時 - 2010-03-14 15:44:48

ANo.2

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(3)

URLからご質問のようなディレクトリを得たいのであれば、正規表現を使って以下のようにします。

---------------
$url = "http://example.com/abc/abc.php";
preg_match("/\/([^\/]*)\/[^\/]*$/", $url, $arr);
echo $arr[1];

投稿日時 - 2010-03-14 13:13:56

補足

説明が足らず申し訳ありません。

この「abc」を取る為に、ファイルまでの絶対パスや相対パスを
手入力で入れずに取得をしたいのですが方法はございませんでしょうか?

例えば、ファイル名だけを取得する場合であれば、

basename(__FILE__, '.php')

だけで取得出来ますが、これと同じように
「上のディレクトリ名だけを取得する」
といった方法を知りたいのです。

投稿日時 - 2010-03-14 15:40:03

ANo.1

realpath("../");
として、サーバー上の絶対パス名を取得して、basenameで取り出す。

dirname()を使って取得したパス(ファイルのあるディレクトリのパス)、それをさらにdirname()に渡してファイルのあるディレクトリのあるディレクトリ(=1階層上のディレクトリ)のパスを取得するか。
※やはりbasenameでディレクトリ名単体だけ取り出す。

投稿日時 - 2010-03-14 11:37:52

あなたにオススメの質問