Php 检查URL是否为图像?

Php 检查URL是否为图像?,php,Php,以前有人问过这个问题,但大多数(如果不是所有答案的话)要么是在所有情况下都不起作用的解决方案,要么是不必要的解决方案(如使用下载整个图像的getimagesize()) 如何检查给定URL是否指向图像,而不必硬编码图像扩展名(如.png'、.jpg等)?您可以通过卷曲读取文件头,然后检测头是否为图像头 curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $file_url); curl_setopt($curl, CURLOPT_NOBODY,

以前有人问过这个问题,但大多数(如果不是所有答案的话)要么是在所有情况下都不起作用的解决方案,要么是不必要的解决方案(如使用下载整个图像的
getimagesize()


如何检查给定URL是否指向图像,而不必硬编码图像扩展名(如
.png
'、
.jpg
等)?

您可以通过卷曲读取文件头,然后检测头是否为图像头

curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $file_url);
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$header = curl_exec($curl);
curl_close($curl);
if (strstr($header, 'image/png')) {
//file is image
}

检查服务器响应的内容类型。但要了解更多详细信息,请下载并分析文件。如果不下载整个图像,则无法可靠地执行此操作,因为您必须实际读取文件类型(因此需要该文件),才能在所有情况下可靠地执行此操作。(除非@Cheery指出您愿意相信服务器告诉您。)