Fileinfo 関数が使えない環境で MIME Type を判定したいときに。
function my_check_mime_type( $tmp_name ) { $bin_data = bin2hex ( file_get_contents ( $tmp_name ) ); $patt = array ( '89504e47' => 'image/png', 'ffd8' => 'image/jpeg', '47494638' => 'image/gif', ); foreach ( $patt as $mgk_num => $mime_type ) { if ( strpos ( $bin_data, "{$mgk_num}" ) === 0 ) return $mime_type; } return false; } echo ( $mime_type = my_check_mime_type( $_FILES['file']['tmp_name'] ) ) ? $mime_type : '不明なファイル形式';
マジックナンバーの参考:https://qiita.com/forestsource/items/15933888466ba9c3f048
Fileinfo 関数が使える環境ならたったのこれだけなので、是非インストールしておきたいモジュール。
$tmp_name = $_FILES['file']['tmp_name']; $finfo = new finfo ( FILEINFO_MIME_TYPE ); $mime_type = $finfo->file( $tmp_name ); echo $mime_type;