2012-06-22 15 views
22

私はこれを検索するのにかなりの努力をしました。だから、これが詐欺であるならごめんなさい。
とにかく、現在のファイルが入っているフォルダの名前を取得する必要があります。たとえば、example.com/folder/subfolder/file.phpのようなものをsubfolderに変換したいとします。
現在のコードはdirname($_SERVER['PHP_SELF'])ですが、subfolderの代わりに/folder/subfolderを返します。ありがとうございました!現在のファイルの親フォルダを取得するPHP

答えて

47

最も単純な方法は次のとおりです。

basename(__DIR__); 

http://php.net/manual/en/language.constants.predefined.php

+2

これは正解とマークするべきではありませんか? '$ _SERVER ['PHP_SELF']'は、 "現在のファイル"を含むファイルを返すことができます。 "現在のファイル"は__DIR__ですか? 何か不足していますか? – taylorcressy

+0

@taylorcressyは、上記の答えがこの前に与えられているようです...また、私たちは本当に魔法の定数を使用していません。 –

+2

@MarcelDjaman私は他のものが正しいとマークされた理由を理解します。私はこれが実際の正解であることを単に明らかにしています。技術的には、最初の答えがすべての場合(すなわち、インクルードされたファイル)に正しくない。 – taylorcressy

-5

ちょうど..を使用します。それは親フォルダを意味する相対アクセサです。

+0

私は知っているが、私はフォルダの名前を取得したい、フォルダにアクセスしない。 – Andrey

+2

ああ、あなたの好きなようにしてください。しかし、もし私があなたを雇うなら、これは明らかに赤い旗を掲げるでしょう。ファイルシステム全体に頼ることなく、適切な設計を行うことができます。その妥当性のみ。 –

36

あなたはbasename()を呼び出してdirname()を使用して、既存のコード結合する必要があります:あなたはそれらすべてを取得したい場合は、このも... basename()で使用

$parent = basename(dirname($_SERVER['PHP_SELF'])); 
4

dirname()が働くだろう:

$folders = explode ('/', $_SERVER['PHP_SELF']); 

$フォルダには、すべてのフォルダ名の配列が含まれます。

乾杯。

+1

これを行う場合、インデックス0の空の要素に注意する必要があります。これは '/'で始まるパスの結果になります – DaveRandom

+0

良い点 - その考えを追加してくれてありがとうございます。 –

+0

@DaveRandomコードを動作させる前にテストを行うもう一つの理由! :)しかし、ええ、それは迷惑な人なら私は他の唯一の方法は正規表現を使用することだと思います。 – kiradotee

2
$folder = basename(dirname(__FILE__)); 
0
str_replace('/','',$_SERVER[REQUEST_URI]); 

結果:
のlib/画像 /index.php

images

関連する問題