PHP从不以.ext结尾的图像url获取文件扩展名


PHP get file extension from image url not ended in .ext

pathinfo()只有在扩展名存在时才能正常工作。

WORKS FINE:
$sourceUrl = "site.com/image.png";    
$photoExt = pathinfo($sourceUrl, PATHINFO_EXTENSION);

.

NOT WORKING
$sourceUrl = "www.gravatar.com/avatar/d9d3bffa0ca503c495b2461881688467?s=32&d=identicon&r=PG";    
$photoExt = pathinfo($sourceUrl, PATHINFO_EXTENSION);

我无法看到解决方案如何获得文件/图像扩展名时,源没有结束在它的文件类型。

解决方案吗?

获取文件时,请查看Content-Type头。它将是image/[something]

这是文件类型,您可以从中派生出扩展名

您不能使用pathinfo来获取没有扩展名的文件的扩展名。

对于这个远程文件,我们只知道这个图像(Content-Type => image/jpeg)的内容类型。但是这个内容类型的扩展名可以是jpg或jpeg,我们不知道这个文件的实际扩展名是什么,所以PHP也无法确定。

如果你想简单地检查这个资源的图像类型,你可以使用:

echo exif_imagetype('http://www.gravatar.com/avatar/d9d3bffa0ca503c495b2461881688467?s=32&d=identicon&r=PG');

它将返回2,什么是IMAGETYPE_JPEG根据文档,但仍然不会知道任何关于真正的文件扩展名