PHPのpathinfo()で拡張子やファイル名を取得する方法

ファイルアップロード時に正しい拡張子かチェックしたり保存するときにファイル名をDBに登録する場合を想定しています。

また、DBから取得したファイル名の拡張子を見て出力方法を変えたり、ファイル名に特殊な文字列を持たせてそれを読み取って表示方法を変えたりなどもできます。

要はテキストの状態のファイルパスから、拡張子のみや拡張子を除いたファイル名だけを抜き出す方法です。

 

. や / で文字列を分割して最後が拡張子で・・・なんてことをする必要はありません。

PHPには便利な関数がありますのでそれを使った方法を紹介します。

PHPで拡張子を取得する方法

PHPでファイルパスから拡張子を取得するには pathinfo() を使います。

pathinfo($ファイルパス, PATHINFO_EXTENSION)

$ファイルパスにはファイルのパスを入れます。

例えば、/abc/def/ghi/image.jpg のような感じです。

PATHINFO_EXTENSIONは固定です。これを入れると拡張子だけを返してくれます。

 

サンプルとしてコードを書くと次のようになります。

これでファイルパスから

だけを取得し出力できます。

簡単ですね。

PHPでファイル名を取得する方法

ファイル名も同様に pathinfo() を使います。

第2引数を変えればファイル名だけが取得できます。

pathinfo($ファイルパス, PATHINFO_FILENAME)

第1引数の$ファイルパスは同じで、第2引数をPATHINFO_FILENAMEにすればOKです。

これで

と出力できます。

便利ですね!

pathinfo()について

第2引数を入れずにpathinfo()にパスだけを入力して実行すると、ディレクトリやファイル名、拡張子を分割して配列で返してくれます。

上のコードのように書けば、

のように出力されます。

まとめて取得したい場合には便利ですね。

 

さらに、第2引数には他にもオプションがあり、

のように PATHINFO_DIRNAME を指定するとディレクトリのみを抜き出し

と出力されます。

 

他にも、

のように PATHINFO_BASENAME を指定すると拡張子つきのファイル名で

と出力されます。

まとめ

pathinfo() を使うとファイルパスから拡張子やファイル名、ディレクトリを取得することができる。

拡張子を取得する場合には、第2引数に PATHINFO_EXTENSION を指定する。

拡張子なしのファイル名を取得する場合は、第2引数に PATHINFO_FILENAME を指定する。

ディレクトリだけを取得する場合は、第2引数に PATHINFO_DIRNAME を指定する。

拡張子つきのファイル名を取得する場合は、第2引数に PATHINFO_BASENAME を指定する。

第2引数を指定しなかったら上の項目が配列で全て取得できる。

コロナの影響でみんな大変だから俺もなんかできること

僕は福井県に住んでいるのですが、戦時中に福井大空襲にあい、その直後に大震災にあってボロボロになった話をおばあちゃんに聞きました。

それでも復活することができ、不死鳥の町と言われるようになりました。

先人達には心から感謝し尊敬します。

リーマンショック、東日本大震災、コロナと数十年に一度と言われる被害が立て続けに起きていますが、僕たちは強いです。

今は苦しいかもしれませんがきっと復活できます。

僕は低学歴ですし小さな小さな粒でしかないですが、プログラミングに関しては必死に勉強し15年以上ごはんにありつけています。

プログラミングを勉強している人の役に立てるほどのスキルはあると思っています。

なので1人でもんもんと悩んでいる若手のエンジニア向けに質問を受け付けることにします。

自宅で待機されている間もパソコンとインターネットがあればプログラミングの勉強はできます。

  • PHP
  • SQL
  • HTML・CSS
  • jQuery

とは言ってもいきなり答えを聞いていたのではなかなか成長できないと思うのです。

なので質問の際には次のことをご連携ください。

  • 何をやりたいか
  • どんなことを調べたか、検索キーワードと参考にしたページのURL
  • 調べた結果どこが分からないか
  • できるなら試したコード

メッセージいはとりあえずTwitterにでもください。

質問はこちら

すぐに返事できないかもしれませんがご了承ください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA