Web ページから画像を取得しようとしていますが、これまでのところうまく機能していますが、見ているサイトの 1 つが として画像を提供している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
か? そうすることは定期的に行われていますか (おそらくレガシー Web サイト/サーバーで)?
ありがとう :)