我想获取已上传图片的扩展名。
据我所知,最好的方法是使用getimagesize()
函数。
但是,当图片的扩展名为.jpg
或.JPEG
时,该函数的mime返回image/jpeg
。
如何获取确切的扩展名?
您可以使用getimagesize
返回的图像类型与image_type_to_extension
函数一起使用:
$info = getimagesize($path);
$extension = image_type_to_extension($info[2]);
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$filePath="images/ajax-loader.gif";
$type=substr($filePath,strrpos($filePath,'.')+1);
echo "file type=".$type;
输出:gif
如果你想要像 .gif 这样的扩展名
$type=substr($filePath,strrpos($filePath,'.')+0);
输出:.gif
strrpos($filePath, '.')+0
的含义是什么? - Cyclonecode$image = explode(".","test.file.hhh.kkk.jpg");
echo end($image);
另一种方法:
$ext = strrchr($filename, "."); // .jpg
$file_ext = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
$filename= $_FILES["file"]["name"];
$file_ext = pathinfo($filename,PATHINFO_EXTENSION);
对于那些想要检查图像类型是否为JPEG、PNG等的人,可以使用exif_imagetype函数。该函数读取图像的前几个字节并检查其签名。以下是来自php.net的一个简单示例:
<?php
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
echo 'The picture is not a gif';
}
?>
你也可以通过点号将文件名分割成数组,并取数组的最后一个元素,如下所示:
$ext = end(explode('.', 'image.name.gif'));
还有一种新方法,适合你哈哈:
$ext = explode('.', 'file.name.lol.lolz.jpg');
echo $ext[count($ext) - 1];
$size = getimagesize($filename);
$ext = explode('/', $size['mime'])[1];