関数dirnameの使い方|ディレクトリやパスを扱う便利な関数も説明

WEBサイトは多くのファイルで構成されています。それらは、色々なディレクトリに分類されて格納されているでしょう。このため、PHPでプログラミングする際には、プログラム内部でパスやディレクトリを扱う場面もありますね。

そんな時、PHPソースファイルがどんな配置に変更されても、ファイルを正しく読み書きするには、ファイルのパスを正確に把握する必要があります。

そんな時に便利な関数として、親ディレクトリのパスを返す関数dirnameおよび類似の関数の使い方を説明します。

PHPプログラミングに興味のある方は、プログラミング学習の参考として、ぜひ読んでみてください。

関数dirnameの使い方

関数の説明

機能:pathで指定された文字列をファイルあるいはディレクトリへのパスとみなして、 カレントディレクトリから levels レベルさかのぼった親ディレクトリのパスを返す。

パラメータ:

引数 説明
 path  string ・パスを示す文字列。
・ディレクトリ区切り文字としてwindowsは\(バックスラッシュ)も使用可。
 levels  int ・さかのぼるレベルを指示する。
・省略時は1レベルさかのぼる。

戻り値:

  • 親ディレクトリのパス
  • pathから最後のスラッシュ以降の部分を取り除いた文字列
  • path にスラッシュがなければ、 ‘.’(ドット:カレントディレクトリ)

使用例

結果

 

ファイルのパスとファイル名を知る便利な方法

PHPのプログラム内で、あるファイルのパスとファイル名を知りたい場合は、マジック定数と呼ばれるPHPで定義済の定数「FILE」を使うと便利です。

マジック定数は使われる場所によって値が変化する定数です。

__FILE__ ・ファイルのフルパスとファイル名 (シンボリックリンクを解決した後のもの)。
・インクルードされるファイルの中で使用された場合、インクルードされるファイルの名前を返す。

そして、(FILE)と記述することで、記述したファイルが配置されているディレクトリを知ることができます。また、これは、マジック定数DIRでも取得できます

__DIR__ そのファイルの存在するディレクトリ。

ファイルパスについては、以下も参考にしてください。

【学習準備編】プログラミング用語16選!初心者がおさえておきたい基礎知識
【学習準備編】プログラミング用語16選!初心者がおさえておきたい基礎知識
前回はプログラミングでよく使う用語の中から、初心者がまず覚えておきたいIT用語をご紹介しました。 今回は一歩進 ...

留意事項

dirnameはファイルシステムを調べるか?

第1引数pathで指定された文字列をパス記述みなしてそれを解析した結果を返します。実際のファイスシステムやディレクトリを調べることはありません

相対パスの場合はどうなるか?

相対パスを含む場合は、結果も相対パスで返されます。
(pathで指定された文字列の最後のスラッシュとそれ以降の要素を取り除いた文字列が返されるため)

拡張子のないファイル名を含む場合はどうなるか?

最後のスラッシュに続く要素がファイル名であるかディレクトリ名であるかに関係なく、最後のスラッシュとそれ以降の要素を取り除いた文字列が返されます。

HTMLの「相対パス」「絶対パス」については以下も参考にしてください。

【初心者必見】HTMLの「相対パス」「絶対パス」について徹底解説!
【初心者必見】HTMLの「相対パス」「絶対パス」について徹底解説!
HTMLでWEBサイトの作成には「パス」の理解が不可欠です。 ですが、この「パスの書き方」がなかなか理解できず ...

類似の関数

パスやディレクトリを扱う際に便利な関数をいくつか紹介します。

basename

機能概要:パスからファイル名を取得

パラメータ:

引数 説明
 path  string ・パスを示す文字列。
・ディレクトリ区切り文字としてwindowsは\(バックスラッシュ)も使用可。
 suffix  string ・名前からカットしたいサフィックスを指定する。
・省略時はサフィックスの指定なしとして名前部を全て返す。

戻り値:

  • パスの最後にある名前の部分を返す。
  • nullでないsaffixを指定した場合、その部分もカットされる。

使用例

結果

realpath

機能概要:正規化された絶対パス名を返す

パラメータ:

引数 説明
 path  string ・パスを示す文字列。
・ディレクトリ区切り文字としてwindowsは\(バックスラッシュ)も使用可。
・nullの場合は、カレントディレクトリを指定したものとみなす。

戻り値:

  • 正規化された絶対パス
  • シンボリックリンクは展開される。
  • /./"、”/../ “および” / ”は絶対パスに展開される。

使用例

結果

getcwd

機能概要:カレントのワーキングディレクトリを取得

パラメータ:

引数 説明
 なし

戻り値:

  • カレントのワーキングディレクトリを返す。
  • 失敗時はfalseを返す。

使用例

結果

pathinfo

機能概要:ファイルパスに関する情報を返す

パラメータ:

引数 説明
 path  string ・パスを示す文字列。
・ディレクトリ区切り文字としてwindowsは\(バックスラッシュ)も使用可。
 flags  int  ・PATHINFO_DIRNAME、 PATHINFO_BASENAME、 PATHINFO_EXTENSION 、PATHINFO_FILENAME のいずれかで指定
・省力時は全てを指定したものとみなす。

戻り値:

  • flagを指定しない場合は、dirname、basename、 extension (存在すれば)、filenameを含む連想配列を返す。
  • flagsを指定すると、 要求した要素を文字列で返す。

使用例

結果

なお、以下の記事も、ファイルの読み書きをするときの参考にしてください。

HTMLで様々な外部ファイルを読み込む方法【コピペOK】
HTMLで様々な外部ファイルを読み込む方法【コピペOK】
こんにちは、ハルキです。 HTMLでは、CSSやメディアなどの様々な外部ファイルを読み込むことができます。 し ...

まとめ

いかがでしたか? 今回は、関数dirnameの使い方を中心にディレクトリやパスの扱い方について説明しました。

これらの関数をうまく利用してディレクトリやファイルのパスを柔軟に扱うことで、<strongシステムのメンテナンスが楽になります。

この記事が、PHPプログラミング習得の参考としてお役に立てば幸いです。

BLOGコンテンツをパーソナライズします

あなたは現在「プログラミング学習者」ですか?