• ベストアンサー

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

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
  • 回答数2
  • ありがとう数5

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

  • ベストアンサー
  • asahina02
  • ベストアンサー率47% (95/202)
回答No.1

自URL取得してそれを / で分割(split)する。 で、後ろから3つめがそれにあたるのではないかと思われます。 $list = split( "/", $_SERVER[ SCRIPT_NAME ] ); $name = $list[ count( $list ) - 3 ];

Cuty_Cat
質問者

お礼

ご回答ありがとうございます。 記述して頂いたスクリプトを、そのままコピーして試してみた所、私が思っていたように上位のディレクトリ名を取得する事ができました。 これでかなりの手間が省けて、作業も先に進める事ができそうです。 適格にアドバイスをして頂き、大変感謝しております。 ありがとうございました。

その他の回答 (1)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

自分なら$_SERVER["SCRIPT_NAME"]などを加工して取り出すかな "/"でexplodeしてarray_reverse で配列ひっくり返して3番目(添え字は[2])を取り出せばいいでしょう。 他からインクルードされるファイルなら__FILE__を使った方がいいかもしれませんがOSによってディレクトリの区切りが変わるので注意しないといけないですね。

参考URL:
.

関連するQ&A

  • フルパスから最後のディレクトリ名を取得したい。

    vb.netなのですが、例えば c:\aaa\bbb\ccc\ddd\eee\fff.exe というフルパスがあったとして、 eeeというディレクトリ名を取得したいのですが、 何か良い方法はないでしょうか。 それぞれのディレクトリ名の文字数や階層数は 決まっていないのですが、オススメの方法が ありましたら、教えて頂けると助かります。

  • ディレクトリを含まないファイルを保持する変数名

    PHP5.2.4を使用しています。 http://localhost/aaa/test.phpのスクリプトの中で$_SERVERを見てみると [SCRIPT_NAME] => /aaa/test.php [PHP_SELF] => /aaa/test.php というようなペアがでますが、 ディレクトリを含まずtest.phpだけの場合は どのような変数名にすればよいというか、 みなさんならどのような変数名を付けますか? $SCRIPT_NAME = '/aaa/test.php' $PHP_SELF = 'aaa/test.php' $変数名 = 'test.php' //←どういう変数名が適切か

    • ベストアンサー
    • PHP
  • ディレクトリをコピーするツールを作ってますけど、うまくいきません。

    ディレクトリをコピーするツールを作ってますけど、うまくいきません。 何方か教えてください! 内容:1、「~/???.tmp」というディレクトリを検索し指定ディレクトリにコピーする。    2、「~/???」というディレクトリも合わせて指定ディレクトリにコピーする。    3、 指定ディレクトリから2階層下にある「aaa」ディレクトリ直下を対象とする。    4、 コピーしたディレクトリを表示する。 使い方:./cptmpDir.sh path1 path2  [-c] 引数: path1 は対象ディレクトリ     path2 はコピー先ディレクトリ -c 指定されていればディレクトリのコピーを行う。 例え以下のようなディレクトリがあるとする。 home/ccc/bbb/aaa/abc.tmp home/ccc/bbb/aaa/abc home/ccc/bbb/aaa/cba home/ccc/bbb/aaa/ddd/efg.tmp home/ccc/bbb/aaa/ddd.tmp ./cptmpDir.sh  /home  /var/tmp [-c] を実行したら home/ccc/bbb/aaa/abc.tmp home/ccc/bbb/aaa/abc home/ccc/bbb/aaa/ddd.tmp が/var/tmpにコピーされるのが正常の働き。 私が書いたシェルは 内容1、3、4、はできたけれども 2、ができてません。 だからhome/ccc/bbb/aaa/abcがコピー対象がになっています。 以下は私が書いたシェルである。 #!/bin/ksh if [[ $# -lt 2]] then echo "usage: $0 path [-c]" exit 1 fi path2=$2 copydir=0 if [[ $3 = "-c" ]] then copydir=1 fi find $1 -maxdepth 3 -mindepth 3 -type d -name "aaa" | ¥ while read d do find $d -maxdepth 1 -mindepth 1 -type d -name "*.tmp" | ¥ while read a do if [[ $copydir -eq 1 ]] then cp -r $a $path2 echo "cp" "${a#*/}" else echo "${a#*/}" fi done done よろしくお願い致します!。 home/ccc/bbb/aaa/abcもコピーされるように!!!

  • VB6.0 フォルダ配下(サブフォルダ含む)のファイルを全て読み込む方法

    環境 OS:WINDOWS 2000 PRO ソフト:VisualBasic 6.0 指定したフォルダ配下の全てのhtmlファイルを読み込む機能を作成したいと考えています。 C:\AAA\BBB\CCC\sample1.html C:\AAA\BBB\CCC\sample2.html C:\AAA\BBB\CCC\DDD\sample3.html C:\AAA\BBB\CCC\DDD\EEE\sample4.html C:\AAA\XXX\YYY\ZZZ\sample5.html 以上のような構造になっていた場合に、ルートフォルダとして『C:\AAA』を指定し、その配下全てのhtmlファイルを読み込み、1ファイルずつ加工したいと考えています。 何階層にも渡るファイルを全て読み込む方法がわかりません。 よろしくお願い致します。

  • Excel VBA サブディレクトリの取得について

    Excel VBA についての質問です。 私は、VBAの初心者です。 フォルダ選択ダイアログを開き、あるフォルダを選択させます。 選択したフォルダ配下のファイルとサブフォルダにあるファイル一覧とそのファイルのパス取得したいです。 【例】D:\TEMP\AAA フォルダを選択 D:\TEMP\AAA  D:\TEMP\AAA\BBB\CCC.txt D:\TEMP\AAA\BBB\DDD\EEE.txt D:\TEMP\AAA\BBB\DDD\FFF.txt GGG.txt が存在する。 まず、フォルダAAAまで選択されたら、 以下の結果がエクセルに出力したいです。 BBB         CCC.txt BBB\DDD        EEE.txt BBB\DDD        FFF.txt               GGG.txt うまく伝えないかもしれないですが、ご教授お願いいたします。

  • ディレクトリ構成とプログラム

    ディレクトリ構成とプログラムについて 各カテゴリ(aaa、bbb、ccc)単位に商品一覧を表示しているサイトで ソースをみると下記のようになっています。 <a href="/cat/aaa/">aaa</a> <a href="/cat/bbb/">bbb</a> <a href="/cat/ccc/">ccc</a> クリックするとルートディレクトリは http://www.xxx.jp/cat/aaa/list/?num=20と表示されます。 ※numは表示商品のmax数。 index.phpがプログラム名なのはわかりますが ディレクトリ構成が / ├index.php(トップページ) ├cat/list/ │ ├aaa │ │ └list │ │ └index.php │ ├ bbb │ としているとは思えません。 どのようなフォルダ構成、実際のプログラムがある場所、どのような制御をしているのでしょうか? また、考え方が記載されているサイトを教えていただけませんか。

    • ベストアンサー
    • PHP
  • XSLTでtest.xmlファイルのccc要素の値を取得する場合は以下

    XSLTでtest.xmlファイルのccc要素の値を取得する場合は以下(1)、(2)のようにやればいいのですが、(2)の箇所のパス(testを)動的(可変)にすることはできるのでしょうか? (1)document関数によりxmlファイルを変数に格納  <xsl:variable name="aaa" select="document('test.xml')"/> (2)上記変数からパスを指定して値を取得  <xsl:variable name="bbb" select="$aaa/test/ccc"/> test.xml <test> <ccc>bbb</ccc> </test> 例)以下は間違ってると思いますがパスに変数を使用して値を取得することは可能でしょうか?   <xsl:variable name="ccc" select="'test'"/> // 変数cccにtestという文字列を格納   <xsl:variable name="bbb" select="$aaa/$ccc/ccc"/> //test/cccがパスのつもり

    • 締切済み
    • XML
  • VB.NETで最後フォのフォルダ名だけを取得する方法

    こんばんは。 VB.NETで a="c:\aaa\bbb\ccc\ddd.txt" となっている文字列から 最後のフォルダ名cccだけを取得するしたいのですが どのような方法が良いでしょうか? 良い方法があったら教えて頂きたいです。 よろしくおねがいします。

  • ディレクトリ名をファイル名するバッチファイル

    ディレクトリ名を取得してその名称でフォルダを作るバッチファイルを考えています。 OSはWINDOWS XPです。 こういったディレクトリがあるとします。 111~444:名称が固定のディレクトリ bbb:名称が可変するディレクトリ mmm.bat、xxx.text:111フォルダと同じところにあるファイル 111┬222─bbb┬333─yyy.text    │        └zzz.text    │    └bbb┬333─yyy.text         └zzz.text mmm.bat xxx.text mmm.batを実行すると、111ディレクトリ以下のフォルダ名を取得し、 下記のようにフォルダを作成し、yyy.textの場所にbatファイルと同じ 所にあるxxx.textをコピーして差し替えるという動作をしたいのです。 (zzz.textは内容は違うが同じファイル名です) 444┬222─bbb┬333─xxx.text    │       └zzz.text    │    └bbb┬333─xxx.text        └zzz.text バッチコマンドで、ディレクトリ名を取得して空のフォルダを作る所までは 下記のようにできたのですが、 444┬222─bbb─333    │    └bbb─333 二つのzzz.textのコピー方法と、yyy.textの場所にxxx.textをコピーするにはbbbという可変するディレクトリを通らなければいけないのでその取得方法がわかりません。 分かる方は是非お教えください。 言葉が足りないところは補足もいたします。 よろしくお願いいたします。

  • 重複レコードの抽出について

    以下のようなテーブルからmailが重複していてnameの値が全て同じ値を持つレコードを取得するためのSQL文を教えてください。 mail | name ----------- aaa | 01 aaa | 01 aaa | 01 bbb | 02 bbb | 02 bbb | 01 ccc | 01 ccc | 01 ccc | 02 select * from test where mail in (select mail from test where mail group by mail having count(mail)>1) 上記のSQL文だと以下のデータが取得されてしまいます。 ↓ mail | name ----------- aaa | 01 ○ aaa | 01 ○ aaa | 01 ○ bbb | 02 × bbb | 02 × ccc | 01 × ccc | 01 × ○印のみ取得したいのですが、 SQL文をどのように修正すればよいのでしょうか。 よろしくお願いいたします。

専門家に質問してみよう