代码之家  ›  专栏  ›  技术社区  ›  Siva

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

  •  11
  • Siva  · 技术社区  · 16 年前

    PHP中有没有标准函数只从相应的文件路径中查找图像的扩展名?

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

    谢谢

    9 回复  |  直到 16 年前
        1
  •  51
  •   E_net4 Tunn    6 年前
    $ext = pathinfo(
        parse_url('/testdir/dir2/image.gif?foo=bar', PHP_URL_PATH), 
        PATHINFO_EXTENSION
    ); //$ext will be gif
    
        2
  •  15
  •   Pekka    16 年前

    通常更需要检测实际图像 类型 (不是引申而是内容)。为此,使用 getimagesize()

        3
  •  6
  •   Nightmare    13 年前

    更好的解决方案

    $filename_from_url = parse_url($url);
    $ext = pathinfo($filename_from_url['path'], PATHINFO_EXTENSION);
    
        4
  •  3
  •   rekobeko    12 年前

    我认为最正确的方法是使用echo exif\u 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
  •  1
  •   Robus    16 年前

    $path = '/some/where/img.gif';
    $path = explode('.',$path);
    $path = end($path);
    
        6
  •  1
  •   ahmed hamdy    10 年前

    我认为使用 strrpos() substr()

    $path = "/testdir/dir2/image.gif";
    $ext = substr($path, strrpos($path, '.')+1);
    echo $ext; // output will be gif
    

    更多答案 Another Question

        7
  •  0
  •   eklundchristopher    16 年前

    我建议您通过GD/ImageMagick检查运行任何上传/链接的图像,并重新保存,以防止图像中隐藏任何恶意代码。这还允许您保存具有相同扩展名的所有图像,以使事情更简单。

    http://www.php.net/imagepng
    http://www.php.net/imagegif
    http://www.php.net/imagejpeg

        8
  •  0
  •   Mudassar Ali Sahil    12 年前

    我向你推荐一种完美的方式

    $file_path = '/some/where/img.gif';  
    $info = new SplFileInfo($file_path);  
    $file_extension = $info->getExtension(); 
    var_dump($file_extension);
    

    The SplFileInfo class

    我希望这对你有帮助。

    穆达萨尔阿里

        9
  •  -2
  •   Your Common Sense    16 年前

    基本字符串函数, strrpos() substr() 我可以帮你。以及许多其他奇特的方式。

    推荐文章