我正在尝试从网页中检索图像,到目前为止它一直运行良好,除了我正在查看的网站之一将图像提供为Content-Type: text/html
,导致我的脚本将其拒绝为不是真实图像。
这是我用来确定内容类型的代码片段:
$accepted_mime = array('image/gif', 'image/jpeg', 'image/jpg', 'image/png');
$headers = get_headers($image);
// Find the Content-Type header
$num_headers = sizeOf($headers);
for($x=0;$x<$num_headers;$x++) {
preg_match('/^Content-Type: (.+)$/', $headers[$x], $mime_type);
if (isset($mime_type[1]) && in_array($mime_type[1], $accepted_mime)) {
return true;
}
}
对于我尝试过的网站,它们会正确返回(例如 , 等结果image/gif
)image/png
,但mpaa.org
似乎使用 type 来提供它们的图像text/html
。这是正常的吗?
我添加了一个print_r
来查看 get_headers` 返回的头数组:
Array
(
[0] => http://www.mpaa.org/templates/images/header_mpaa_logo.gif
[1] => Array
(
[0] => HTTP/1.1 200 OK
[1] => Server: nginx/1.2.0
[2] => Date: Sat, 17 Nov 2012 17:19:06 GMT
[3] => Content-Type: text/html
[4] => Connection: close
[5] => P3P: CP="NON DSP COR ADMa OUR IND UNI COM NAV INT"
[6] => Cache-Control: no-cache, no-store, must-revalidate
[7] => Pragma: no-cache
)
)
我可以轻松地将其添加text/html
到我接受的内容类型列表中,但这绝对不是理想的解决方案;)有谁知道为什么 mpaa.org 用这个来提供他们的图像Content-Type
?这样做是常规做法吗(可能使用旧网站/服务器)?
谢谢 :)