【PHP入門】pathinfo関数を使って拡張子名やファイル名を簡単取得

こんにちは!エンジニアのオータケです!

みなさんは、ファイルパスの中からファイル名だけ抽出したい拡張子だけ抽出したいといったケースに遭遇したことはありませんか?

splitでファイルパスをセパレータで切り分けたり、substr関数を使って抽出したり様々な方法があるかと思います。

しかし、pathinfo関数を使えば一発でその悩みが解決します!

この記事では、

・pathinfo関数で何ができるのか?
・pathinfo関数のオプションを指定して深く使う方法

といった内容から

・pathinfoを扱う上での注意点

といった実践的な内容まで詳しく解説しています。

本記事を読んでpathinfo関数への理解を深めましょう!

pathinfo関数とは?

どういうときに使うの?

pathinfo関数はファイルパスに関しての情報を配列で取得する関数です。

どういった情報が得られるのかと言うとindex.phpというファイルのファイル名indexだけを取得できたり、拡張子であるphpだけを取得できる関数です。

それだけでなく、/webhome/website/index.phpのようなファイルパスがあった場合、/webhome/websiteといったファイルが存在しているパスだけを抽出することもできます。

そんな便利なpathinfoを次の項で実際に使用してみましょう!

pathinfo関数を使ってみる

pathinfo関数の使い方は難しくありません。

早速サンプルを見てみましょう。

実行結果

まずpathinfo関数にはファイル名を含むファイルパスを渡しています。
使い方としては引数に渡すだけなので難しくはありません。

そしてパスに関する情報を戻り値として$infoに保持するように書いています。
この時、戻り値は配列になっており特定のキー名をしていすることでそれぞれの情報を持ってくることが可能です。

実行結果を見ていただくとわかりやすいかと思いますが、

dirname
basename
extension
filename

といった4種類の情報が取得できたかと思います。

上から解説していくとこのような形になります。

キー名内容
dirnameファイル名を除くディレクトリパス
basenameディレクトリパスを除くファイル名
extension引数で指定したファイル名の拡張子だけを抽出
filename引数で指定したファイル名の拡張子を除いたファイル名を取得

pathinfoを呼ぶだけでこのように簡単に情報を得られることができました!

こんなファイルパスの場合はどうなる?

特殊なファイルパス名の場合どういった結果が戻ってくるかを試してみました。
みなさんが実現したいことがこのpathinfoで実現できるか参考になれば幸いです!

その1 ディレクトリパスにドットが含まれている場合

例:/fruits/mask.melon/tabetai.php

実行結果:

その2 ファイル名に拡張子がない場合

例:/fruits/melon/tabetai

実行結果:

その3 ファイル名にドットが2つ以上含まれている場合

例:/fruits/melon/tabetai.oisii.php

その4 ファイル名が存在しない(隠しファイル)である場合

例:/fruits/melon/.htaccess

このような結果になりました。
ややこしいかな?と思うのはその4のhtaccessのような場合は少しややこしいかもしれません。

では続いてpathinfoを使う上で、ファイル名に日本語などのマルチバイト文字が含まれている場合はどうすればよいかを解説したいと思います!

pathinfo関数を使う上での注意点

pathinfoを使ってファイルパスの情報を取得したのはいいけど、結果が文字化けしていて使い物にならないといったことはありませんか?

そういった場合はsetlocale関数を使ってからpathinfoを扱うことで改善されます。

例えばこのようにすると良いでしょう。

setlocale関数は設定が正しくできなかった場合falseを返すためそのあたりのチェック処理は必要ですが、このようにすれば文字化けを改善できる可能性があります。

まとめ

いかがでしょうか?

今回はファイル名や拡張子名といったファイルパス情報を取得するためのpathinfoについて解説してきました。

Webサイト開発などでファイル名を管理するような場面で使うことがあるので忘れないようにしておきましょう!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

オータケ

オータケ

30歳、フリーランスプログラマ。中学の頃よりプログラミングに興味を持ちゲーム開発やWebサイト構築などを経験
新しいフレームワークやライブラリに興味があり革新的な機能が含まれていると泣いて喜ぶ。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説