PHPプログラミング

レシピ

ファイル / ディレクトリ

パスからファイル名を取得する

basename関数、またはpathinfo関数を使い、パスからファイル名のみを取得する方法について解説します。

この記事のポイント

  • パスからファイル名のみを取得する
  • basename関数、pathinfo関数の2つのパターンがある
  • URL形式のパスからもファイル名を取得できる

目次

パスからファイル名のみ取得する

パスからファイル名のみを取得したい場合、basename関数、またはpathinfo関数を使って取得することができます。
それぞれのコード例と、出力例は以下のようになります。

basename関数のコード例

echo basename('/Local/File/test/images/pic.jpg');

出力例

pic.jpg

続いて、pathinfo関数のコード例です。

pathinfo関数のコード例

var_dump( pathinfo( '/Local/File/test/images/pic.jpg'));

出力例

array(4) {
	["dirname"]=> string(6) "./test"
	["basename"]=> string(10) "sample.jpg"
	["extension"]=> string(3) "jpg"
	["filename"]=> string(6) "sample"
}

basename関数はファイル名のみ返すのに対し、pathinfo関数はファイル名以外の情報も含めて返します。
そのため、2つの方法のうちどちらを使用するかはファイル名以外の情報も必要かどうかで判断することができます。

Note

basename関数、およびpathinfo関数は拡張子の偽造を調べることはできません。ファイルの拡張子が正しいかを厳密に調べたい場合は、mime_content_type関数などでMIMEタイプを取得して確認する必要があります。

使用例

ファイルのパスはURL形式でも取得することができます。

basename関数のコード例

echo basename('http://localhost/test/pic.gif');

出力例

pic.gif

pathinfo関数も同じように取得できます。
今回はファイル名のみを取得するように、第2パラメータに定数を渡します。

pathinfo関数のコード例

echo pathinfo( 'http://localhost/test/sample.jpg', PATHINFO_BASENAME);

出力例

sample.jpg

定数を渡すと、返り値は配列形式ではなく文字列のみになり、basename関数と全く同じ返り値となります。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。