phpでファイルの拡張子を取得するには pathinfo() を使えば簡単だが、バージョンによってバグがあるので注意が必要だ。
当エントリでは pathinfo() を使わない方法を紹介する。
function getExtension($fileName) { $fileName = basename($fileName); $extension = preg_replace('/^.*\.([^.]{1,})$/', '$1', $fileName); if (is_null($extension)) return ''; if ($fileName === $extension) return ''; return $extension; }
正規表現を使って拡張子の部分だけ取り出す。
preg_replace() は、置換が行われた文字列を返す。
置換されない場合は preg_replace() へ渡した値(ファイル名)がそのまま返されるので、置換されていなかったら拡張子が無いと判断し、空文字を返すようにしている。
コメント