Есть ли какая-либо стандартная функция в PHP, чтобы найти только расширение изображения из соответствующего пути к файлу?
Например, ff мой путь изображения похож на '/testdir/dir2/image.gif', тогда функция должна возвращать 'gif'.
Спасибо
Есть ли какая-либо стандартная функция в PHP, чтобы найти только расширение изображения из соответствующего пути к файлу?
Например, ff мой путь изображения похож на '/testdir/dir2/image.gif', тогда функция должна возвращать 'gif'.
Спасибо
$ext = pathinfo('/testdir/dir2/image.gif', PATHINFO_EXTENSION); //$ext will be gif
ОБНОВЛЕНИЕ: Я вижу много downvotes. Какая проблема с моим подходом? Пожалуйста, дайте мне знать.
Обычно более желательно определить фактический тип изображения (не по расширению, а по его содержимому). Для этого используйте getimagesize()
.
У меня была проблема с первым ответом и url с якорем ex. google.com/image.jpg#anchor
лучшее решение
$filename_from_url = parse_url($url);
$ext = pathinfo($filename_from_url['path'], PATHINFO_EXTENSION);
Как упоминал полковник Шрапнель; там довольно много способов
$path = '/some/where/img.gif';
$path = explode('.',$path);
$path = end($path);
Я думаю, что наиболее правильным способом является использование функции 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)];
}
Я бы порекомендовал вам запустить любые загруженные/связанные изображения с помощью проверки GD/ImageMagick и повторно сохранить его, чтобы предотвратить любые вредоносные коды, скрытые в изображениях. Это также позволит вам сохранить все изображения с тем же расширением, чтобы облегчить вам работу.
http://www.php.net/imagepng
http://www.php.net/imagegif
http://www.php.net/imagejpeg
Я бы порекомендовал вам отличный способ
$file_path = '/some/where/img.gif';
$info = new SplFileInfo($file_path);
$file_extension = $info->getExtension();
var_dump($file_extension);
подробнее здесь Класс SplFileInfo
Надеюсь, это поможет вам.
Ура!
Мудассар Али
Я думаю, что простой способ с использованием методов strrpos()
и substr()
$path = "/testdir/dir2/image.gif";
$ext = substr($path, strrpos($path, '.')+1);
echo $ext; // output will be gif
больше ответов для Другой вопрос, связанный с этим вопросом
Основные функции строки, strrpos()
и substr()
могут сделать это для вас. Как и многие другие причудливые способы.