PHP中是否有任何标准函数只能从相应的文件路径中找到图像的扩展名?
例如,如果我的图像路径类似于'/testdir/dir2/image.gif'那么函数应该返回'gif'。
由于
答案 0 :(得分:44)
$ext = pathinfo('/testdir/dir2/image.gif', PATHINFO_EXTENSION); //$ext will be gif
更新:我看到很多downvotes。我的方法有什么问题?请告诉我。
答案 1 :(得分:15)
通常更希望检测实际图像类型(不是通过扩展而是通过其内容)。为此,请使用getimagesize()
。
答案 2 :(得分:5)
我遇到第一个回答的问题,并且有关于锚点的网址。 google.com/image.jpg#anchor
更好的解决方案
$filename_from_url = parse_url($url);
$ext = pathinfo($filename_from_url['path'], PATHINFO_EXTENSION);
答案 3 :(得分:1)
正如Shrapnel上校所说;有很多方法
$path = '/some/where/img.gif';
$path = explode('.',$path);
$path = end($path);
答案 4 :(得分:1)
我认为最正确的方法是使用echo exif_imagetype函数:
exif_imagetype("/testdir/dir2/image.gif");
function get_image_type($image_path){
$extension = array(IMAGETYPE_GIF => "gif",
IMAGETYPE_JPEG => "jpeg",
IMAGETYPE_PNG => "png",
IMAGETYPE_SWF => "swf",
IMAGETYPE_PSD => "psd",
IMAGETYPE_BMP => "bmp",
IMAGETYPE_TIFF_II => "tiff",
IMAGETYPE_TIFF_MM => "tiff",
IMAGETYPE_JPC => "jpc",
IMAGETYPE_JP2 => "jp2",
IMAGETYPE_JPX => "jpx",
IMAGETYPE_JB2 => "jb2",
IMAGETYPE_SWC => "swc",
IMAGETYPE_IFF => "iff",
IMAGETYPE_WBMP => "wbmp",
IMAGETYPE_XBM => "xbm",
IMAGETYPE_ICO => "ico");
return $extension[exif_imagetype($image_path)];
}
答案 5 :(得分:0)
我建议您通过GD / ImageMagick检查运行任何上传/链接的图像并重新保存,以防止隐藏在图像中的任何恶意代码。这样您还可以使用相同的扩展名保存所有图像,以便于您使用。
http://www.php.net/imagepng
http://www.php.net/imagegif
http://www.php.net/imagejpeg
答案 6 :(得分:0)
我会向你推荐完美的方式
$file_path = '/some/where/img.gif';
$info = new SplFileInfo($file_path);
$file_extension = $info->getExtension();
var_dump($file_extension);
有关详细信息,请The SplFileInfo class
我希望这会对你有所帮助。
干杯!
Mudassar Ali
答案 7 :(得分:0)
我认为使用strrpos()
和substr()
方法的简便方法
$path = "/testdir/dir2/image.gif";
$ext = substr($path, strrpos($path, '.')+1);
echo $ext; // output will be gif
与此问题相关的Another Question的更多答案
答案 8 :(得分:-2)
基本字符串函数strrpos()
和substr()
可以为您完成。以及许多其他奇特的方式。