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
根据文档,但仍然不会知道任何关于真正的文件扩展名