Как найти расширение изображения из пути в PHP? - PullRequest
11 голосов
/ 05 июля 2010

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

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

Спасибо

Ответы [ 9 ]

45 голосов
/ 05 июля 2010
$ext = pathinfo('/testdir/dir2/image.gif', PATHINFO_EXTENSION); //$ext will be gif

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

15 голосов
/ 05 июля 2010

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

5 голосов
/ 13 ноября 2012

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

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

$filename_from_url = parse_url($url);
$ext = pathinfo($filename_from_url['path'], PATHINFO_EXTENSION);
1 голос
/ 12 июня 2014

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

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

$path = '/some/where/img.gif';
$path = explode('.',$path);
$path = end($path);
0 голосов
/ 12 октября 2015

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

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

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

0 голосов
/ 07 мая 2014

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

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

для более подробной информации здесь Класс SplFileInfo

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

Ура!

Мудассар Али

0 голосов
/ 05 июля 2010

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

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

0 голосов
/ 05 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...