PHPでは、画像の拡大縮小やトリミングなど、ファイルの種類に応じた処理が必要になることが多く、この場合、ファイルの種類を判断することが非常に重要です。そこで、この記事では、ファイルの種類を判断するためによく使用される PHP 関数をいくつか紹介します。
PHP5.3 より前のバージョンでは、mime_content_type 関数を使用してファイルの MIME タイプを取得できます。この関数の構文は次のとおりです。
string mime_content_type ( string $filename )
この関数はパラメータとしてファイル名を受け取り、ファイルの MIME タイプを返します。例:
$filename = 'test.jpg'; $mime_type = mime_content_type($filename); echo "The MIME type of $filename is: $mime_type";
この関数は、画像、オーディオ、ビデオ、テキストなどの最も一般的なタイプのファイルを判別できます。ただし、すべてのファイル形式をサポートしているわけではありません。場合によっては、間違った MIME タイプが返されることがあります。
PHP5.3 以降、finfo_file 関数を使用してファイルの MIME タイプを取得できるようになりました。この関数の構文は次のとおりです。
finfo finfo_file ( resource $finfo , string $filename [, int $options = FILEINFO_NONE [, resource $context ]] )
このうち、$filename はチェックするファイル名、$finfo は finfo_open 関数によって返されるファイル情報オブジェクトです。例:
$finfo = finfo_open(FILEINFO_MIME_TYPE); $filename = 'test.jpg'; $mime_type = finfo_file($finfo, $filename); echo "The MIME type of $filename is: $mime_type";
finfo_file 関数は PHP の fileinfo 拡張子に依存しているため、使用する前に拡張子が有効になっていることを確認する必要があることに注意してください。
pathinfo 関数は、PHP に付属している関数で、ファイルのパス情報を取得するために使用できます。ファイルのパスとファイル名に加えて、ファイルの拡張子も返すことができます。この関数の構文は次のとおりです。
array pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )
このうち、$path は解析する必要があるファイル パスです。返される結果は、ディレクトリ名、ベース名、拡張子、ファイル名などのパス情報を含む配列です。例:
$filename = 'test.jpg'; $info = pathinfo($filename); echo "The extension of $filename is: " . $info['extension'];
ファイルが画像かどうかを確認したい場合は、getimagesize 関数を使用できます。この関数の構文は次のとおりです。
array|false getimagesize ( string $filename [, array &$imageinfo ] )
このうち、$filename は確認するファイル名、$imageinfo は画像情報を取得する際の追加データを格納するために使用されるオプションの配列です。 getimagesize 関数が false を返した場合、ファイルが画像ではないことを意味します。例:
$filename = 'test.jpg'; $image_info = getimagesize($filename); if ($image_info !== false) { echo "$filename is an image file."; } else { echo "$filename is not an image file."; }
getimagesize 関数は PHP の GD 拡張機能に依存しているため、使用する前に拡張機能が有効になっていることを確認する必要があることに注意してください。
まとめ
上記では、ファイルの種類を判別するためによく使用されるいくつかの PHP 関数を紹介しましたが、それぞれに長所と短所があり、実際の状況に応じて選択して使用できます。なお、これらの機能を使用する場合、ファイルの種類はファイルヘッダーで判断されるため、ファイルの異常によっては誤判定される場合があります。
以上がファイルの種類を判断する PHP 関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。