如何在PHP中找到路径中图像的扩展名?

时间:2010-07-05 12:02:38

标签: php image

PHP中是否有任何标准函数只能从相应的文件路径中找到图像的扩展名?

例如,如果我的图像路径类似于'/testdir/dir2/image.gif'那么函数应该返回'gif'。

由于

9 个答案:

答案 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()可以为您完成。以及许多其他奇特的方式。