PHPでファイル名や拡張子,ディレクトリ名を取得する方法

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

PHPではファイル名や拡張子、ディレクトリ名、フルパスなどを簡単に取得することができます。

いくつか方法があるので、それぞれを比較し、やりやすい方法でコーディングしていきましょう。

 

basename関数で取得

パスの最後にある名前を取得できます。

ファイル名を取得

フルパスからファイル名だけを取得してみましょう。

file.txt

上記のようにフルパスをbasename()で出力するとfile.txtとファイル名だけが取得できましたね。

ディレクトリ名を取得

パスの最後がディレクトリ名だった場合、そのディレクトリを取得します。

dir

最後がディレクトリでも、最後の文字列を区切り文字/(スラッシュ)を除いて取得します。

ファイル名から拡張子を除外して取得

フルパスからファイル名を、拡張子を省いて取得してみましょう。

file

今度は.txtも除外され、ファイル名のfileの部分だけが取得できました。

basename関数の構文

basename (ファイル名を取得したいパス [, 除外したい最後の文字] ([ ]は省略可));

basename()はパスを指定するだけで、自動的にファイル名を判別し取得してくれます。

/(スラッシュ)(windowsは\(バックスラッシュ)も)を区切り文字とし、最後の区切り文字以降をファイル名として取得し、区切り文字は削除されます。

除外したい最後の文字

第二引数の「除外したい最後の文字」は省略可ですが、ここを指定すると、その文字列もカットされます。

拡張子を除外したい場合によく使いますが、最後の文字列しか指定できません。

 

  1. file.txt.txtを指定→file部分のみ取得
  2. file.txtfileを指定→最後の文字列ではないので、file.txtをそのまま取得

2.は最後以外の文字列を指定しており、無意味なのでやめましょう。

pathinfo関数で取得

ファイルパスに関する情報を取得できます。

ファイル名や拡張子などを取得

pathinfo()はファイル名だけではなく、拡張子やディレクトリなども配列で取得できます。

/home/example/www
file.txt
txt
file

上記のように、ファイル名や拡張子などのそれぞれの情報を配列に格納し、好きに取り出せるようにしてくれます。

オプションを指定して取得

ファイル名や拡張子などのいずれかをfilepath()のオプションであらかじめ指定すれば、特定のファイル情報のみ簡単に取得できます。

file.txt

第二引数にPATHINFO_BASENAMEのオプションを指定し、単純にechoで出力すると、ファイル名が表示されました。

第二引数のオプションによって、拡張子やディレクトリなどの特定の情報が1つだけ取得されます。

pathinfo関数の構文

pathinfo ( ファイル情報を取得したいファイルパス [, オプション]([ ]は省略可) );

ファイル情報を連想配列に格納するので、呼び出したいキーを指定すれば自由に引き出し可能です。

pathinfoの連想配列にはどんな要素が格納されているか

例えば先ほどのサンプルを例にpathinfo()にどのような連想配列が格納されているか見てみましょう。

Array
(
[dirname] => /home/example/www
[basename] => file.txt
[extension] => txt
[filename] => file
)

参考:print_r関数で配列を表示

上記のように、連想配列には左側の[]内にキー、右側に値が格納されています。

キーをechoなどで呼び出せば、キーに繋がった値が出力できます。

filepathのオプション一覧

filepath()のオプションは以下の4つです。

オプション名説明
PATHINFO_DIRNAMEディレクトリ名/home/example/www
PATHINFO_BASENAMEファイル名file.txt
PATHINFO_EXTENSION拡張子txt
PATHINFO_FILENAME拡張子なしのファイル名file

realpath関数でフルパス取得

ファイルの絶対パスを取得します。

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

今度は逆にファイル名からフルパスを取得してみましょう。

/home/example/www/file.txt

上記のようにフルパスで表示されました。

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す

*