Как найти расширение образа из пути в PHP?

Есть ли какая-либо стандартная функция в PHP, чтобы найти только расширение изображения из соответствующего пути к файлу?

Например, ff мой путь изображения похож на '/testdir/dir2/image.gif', тогда функция должна возвращать 'gif'.

Спасибо

Ответ 1

$ext = pathinfo('/testdir/dir2/image.gif', PATHINFO_EXTENSION); //$ext will be gif

ОБНОВЛЕНИЕ: Я вижу много downvotes. Какая проблема с моим подходом? Пожалуйста, дайте мне знать.

Ответ 2

Обычно более желательно определить фактический тип изображения (не по расширению, а по его содержимому). Для этого используйте getimagesize().

Ответ 3

У меня была проблема с первым ответом и url с якорем ex. google.com/image.jpg#anchor

лучшее решение

$filename_from_url = parse_url($url);
$ext = pathinfo($filename_from_url['path'], PATHINFO_EXTENSION);

Ответ 4

Как упоминал полковник Шрапнель; там довольно много способов

$path = '/some/where/img.gif';
$path = explode('.',$path);
$path = end($path);

Ответ 5

Я думаю, что наиболее правильным способом является использование функции 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)];
}

Ответ 6

Я бы порекомендовал вам запустить любые загруженные/связанные изображения с помощью проверки GD/ImageMagick и повторно сохранить его, чтобы предотвратить любые вредоносные коды, скрытые в изображениях. Это также позволит вам сохранить все изображения с тем же расширением, чтобы облегчить вам работу.

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

Ответ 7

Я бы порекомендовал вам отличный способ

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

подробнее здесь Класс SplFileInfo

Надеюсь, это поможет вам.

Ура!

Мудассар Али

Ответ 8

Я думаю, что простой способ с использованием методов strrpos() и substr()

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

больше ответов для Другой вопрос, связанный с этим вопросом

Ответ 9

Основные функции строки, strrpos() и substr() могут сделать это для вас. Как и многие другие причудливые способы.