アップロードされた画像拡張子を取得したい。
私が知っているように、最善の方法はgetimagesize()
機能です。
しかし、この関数の MIME はimage/jpeg
、画像に.jpg
または.JPEG
拡張子がある場合に戻ります。
どうすれば正確に拡張子を取得できますか?
image_type_to_extension
によって返される画像タイプで関数を使用できますgetimagesize
:
$info = getimagesize($path);
$extension = image_type_to_extension($info[2]);
$ext = pathinfo($filename, PATHINFO_EXTENSION);
strrpos および substr 関数を使用して、任意のファイルの拡張子を取得することもできます
$filePath="images/ajax-loader.gif";
$type=substr($filePath,strrpos($filePath,'.')+1);
echo "file type=".$type;
出力: gif
.gif のような拡張子が必要な場合
$type=substr($filePath,strrpos($filePath,'.')+0);
出力: .gif
$image = explode(".","test.file.hhh.kkk.jpg");
echo end($image);
それを行うもう1つの方法:
$ext = strrchr($filename, "."); // .jpg
$size = getimagesize($filename);
$ext = explode('/', $size['mime'])[1];
次のように、ファイル名をドットで分解し、配列の末尾を取得することもできます。
$ext = end(explode('.', 'image.name.gif'));
そして、あなたのための新しい方法笑:
$ext = explode('.', 'file.name.lol.lolz.jpg');
echo $ext[count($ext) - 1];
画像の種類が JPEG か PNG かどうかを確認したい場合は、exif_imagetype関数を使用できます。この関数は、イメージの最初のバイトを読み取り、その署名をチェックします。php.net の簡単な例を次に示します。
<?php
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
echo 'The picture is not a gif';
}
?>