[PHP] 拡張子を取得する方法

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() へ渡した値(ファイル名)がそのまま返されるので、置換されていなかったら拡張子が無いと判断し、空文字を返すようにしている。

コメント