• ベストアンサー

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

PHPで、該当ファイルの一つ上のディレクトリ名を取得したいのですが、そのような関数はございますでしょうか? 例えば、該当のページが 「http://example.com/abc/top.php」 だった場合、 「abc」を文字列として取得したいです。 自分のファイル名を取得する時はbasenameという関数を使う所までは 分かったのですが、一つ上のディレクトリ名を取得する関数を探す事が 出来ませんでした。ご教授頂けると大変助かります。 宜しくお願い致します。

noname#125049
noname#125049
  • PHP
  • 回答数3
  • ありがとう数7

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

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

既に #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>"; ?>

noname#125049
質問者

お礼

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

その他の回答 (2)

noname#111181
noname#111181
回答No.3

URLからご質問のようなディレクトリを得たいのであれば、正規表現を使って以下のようにします。 --------------- $url = "http://example.com/abc/abc.php"; preg_match("/\/([^\/]*)\/[^\/]*$/", $url, $arr); echo $arr[1];

noname#125049
質問者

補足

説明が足らず申し訳ありません。 この「abc」を取る為に、ファイルまでの絶対パスや相対パスを 手入力で入れずに取得をしたいのですが方法はございませんでしょうか? 例えば、ファイル名だけを取得する場合であれば、 basename(__FILE__, '.php') だけで取得出来ますが、これと同じように 「上のディレクトリ名だけを取得する」 といった方法を知りたいのです。

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.1

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

関連するQ&A

  • ディレクトリ内のファイル名の取得

    ディレクトリを読んでディレクトリに有る画像ファイル $dname = dir ( "./cgi-bin/image/" ); while ( false !== ( $imagefile = $dname->read() )) { } 拡張子を除いたファイル名を取得したい abc.jpg dfg.jpg xyz.jpg abc dfg xyz 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 【PHP】ファイル名を取得して拡張子変更で実行

    sample.phpというphpファイル内で、同ディレクトリにあるsample.txtを読みこませたいのですが、上手くいきません。 <?php $bn = basename($_SERVER['PHP_SELF'], ".php"); ?> で$bnに、sampleという名前を取得させるところまではできましたが <?php require($bn.txt); ?> という式では上手くいかないのです…。 <a href="<?php print $bn ?>.txt">リンク名</a>は成功したので、おしいところまで行ってるのではないかと思うのですが。 ファイル名を取得して任意の拡張子をくっつけて実行するような数式がありましたら教えてください。よろしくお願いします。

  • 上位ディレクトリ名(フォルダ名)を取得するには?

    phpファイルが入っている、2階層上位のディレクトリ名(フォルダ名)を取得したいと思っています。 例 http://~.com/aaa/bbb/ccc/test.php test.phpが本体です。 ここから2階層上位のディレクトリ名、ここでは「bbb」を取得するような事はできないでしょうか? test.phpの中に、2階層上位のディレクトリ名を記述したいと思っています。 具体的に言うと、 $name = "●●●"; 上記の●●●に、2階層上位のディレクトリ名を入れたいです。 同じようなファイルが多数あり、「bbb」には様々なフォルダ名があり、test.phpの1つ1つを書き換えるのに手間がかかるので、ディレクトリ名を自動的に取得できれば助かります。 phpの知識がほとんどないため、お力をお借りできればと思い、質問させて頂きました。 アドバイスをお願い致します。

    • ベストアンサー
    • PHP
  • ファイル名を取得できない

    次のようなソースでディレクトリ内のファイル名を取得しようとしています。 $dh=opendir("."); while(($entry=readdir($dh))){ if(is_file($entry)){ print $entry."<>"; } } closedir($dh); このソースを、取得したいディレクトリ内で動かすとまったく問題ないのですが、ディレクトリのパスを1個上の階層などから相対パスで指定すると、.phpファイルと.htmlファイルは取得するのですが、ほかのファイル名は取得されなくなってしまいます。 何かphp.iniなどで設定があるのでしょうか。 回避方法がありましたら是非ご教授ください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ディレクトリ名を取得したい

    perlでディレクトリ名だけを取得したいのですが、 なかなかうまい方法が見つかりません。 ファイル名を取得する・・・というのは結構あるのですが、 ディレクトリ名だけ、というのがどうもわかりません。 ちなみにファイル名取得は以下のようにやっています。 my $md; opendir(DIR, 'q'); while (defined($dir = readdir(DIR))) { $md=substr($dir,0,6); } closedir(DIR); ディレクトリ名だけを取得・・・というのはどうやればよいのでしょうか。

    • ベストアンサー
    • Perl
  • FTPサーバーから受信したファイル一覧からファイル名だけを取得したいです

    こんばんは。いつもお世話になっております。 VB.NET+WinXPなのですが、 FTPサーバーにログインして、 LISTコマンドでファイル一覧を要求すると 「drwxrwxr-x 2 53 53 4096 Feb 28 2006 abc」 などというファイルやフォルダの一覧がかえって来ると思うのですが、 この中からファイル名やフォルダ名だけを取得するには どうしたらよいでしょうか。 TABやコンマが入っていないので、文字列関数で切り取るにも 区切りがわからないと思うのです。 ローカルドライブのDir関数なら、FileAttribute.Nomalや.Directoryの指定でファイル名だけや ディレクトリー名だけを指定して 取得することが出来るのですが、FTPサーバーの場合からの場合はどういった方法があるでしょうか。 参考程度でも構いませんので教えて頂けるとたすかります。m(__)m

  • ファイルとディレクトリの見分け方は?

    環境  WindowsXP、Apache2.0.47、PHP4.3.2で使用しています。 質問  関数readdir($dh)で指定されたパスのファイルとディレクトリのリストを取得しています。  両方が存在していた場合、ファイルとディレクトリを見分けるためにはどのようにしたら良いのでしょうか?  都合の良い関数は無いように思ったのですが... よろしくお願いします。

    • ベストアンサー
    • PHP
  • ディレクトリ以下のファイル名を取得する

    ディレクトリ名を指定するだけで、 そのディレクトリ内にある全てのデータファイルを 読み込んで処理するプログラムをC++で作ろうと考えています。 その為に、ディレクトリ以下のファイルのファイル名を 取得する方法(命令)を教えて頂きたく思います。 よろしくお願いします。

  • VB.NET 最下位のディレクトリ名を取得する方法

    こんにちは ディレクトリのパス 「D:\ディレクトリ1\ディレクトリ2\テキストファイル.txt」から ファイル名「テキストファイル.txt」が存在する、最下位のディレクトリ名「ディレクトリ2」 を取得したいのですが、このような機能を提供する関数をご存知の方がいらっしゃいま したらお教え願います。

  • PHPでパラメータ取得

    ※httpのhを省いています。 //index.phpの内部に if( $_REQUEST['m'] == "abc" ) { echo 'abc'; } if( $_REQUEST['m'] == "cde" ) { echo 'cde'; } というプログラムがあり、 ttp://example.com/index.php?a=abc とした時、「abc」が返され、 ttp://example.com/index.php?a=cde とした時、「cde」が返されるのは分かりますが、「abc」も「cde」も両方共表示できるにはどのようなにしたらURLが良いですか? あるいは、プログラムの一部を変えて両方表示する方法はあるでしょうか? ただし、下記の場合を除くとします。 ttp://example.com/index.php?a=abc if( $_REQUEST['m'] == "abc" ) { echo 'abc'; echo 'cde'; } お手数ですが、よろしくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう