这很适合获取标题
$imageurl = "http://p.twimg.com/AW2-vIUCAAE_1FN.png";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL, $image_url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt ($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
$content = curl_exec ($ch);
curl_close ($ch);
print_r($content);
返回
HTTP/1.1 200 OK
Server: nginx
X-peep-host: den2twapi014
Last-Modified: Mon, 15 Aug 2011 03:41:50 GMT
ETag: "7283847-dbb8-4aa830b1dabf0"
Accept-Ranges: bytes
Content-Length: 56248
Cache-Control: public, max-age=21600
Expires: Wed, 28 Mar 2012 15:53:57 GMT
Content-Type: image/png
X-CDN: AKAM
Date: Wed, 28 Mar 2012 09:53:57 GMT
Connection: keep-alive
回应Content-Type:
的最佳方式是什么?
答案 0 :(得分:20)
试试这个: -
<?php
$image_url = "http://p.twimg.com/AW2-vIUCAAE_1FN.png";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL, $image_url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt ($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
$content = curl_exec ($ch);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
echo $contentType;
echo "<br/>";
curl_close ($ch);
echo "<pre>";
print_r($content);
?>
答案 1 :(得分:4)
致电curl_close()
之前,请致电curl_getinfo()
:
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
echo $contentType;
或者,如果你想要一个经过解析的头部数组,这里有一个快速而又脏的解决方案(警告:这没有什么可以验证提供的字符串实际上是HTTP响应,请谨慎使用):
<?php
function parse_http_head ($str) {
$result = array();
// Split into lines
$lines = explode("\r\n", $str);
// Handle response line
$line = explode(' ', array_shift($lines), 3);
$version = explode('/', $line[0]);
$result['version'] = (float) $version[1];
$result['code'] = (int) $line[1];
$result['text'] = $line[2];
// Parse headers
$result['headers'] = array();
while ($line = trim(array_shift($lines))) {
list($name, $val) = explode(':', $line, 2);
$name = strtolower(trim($name)); // Header names are case-insensitive, so convert them all to lower case so we can easily use isset()
if (isset($result['headers'][$name])) { // Some headers (like Set-Cookie:) may appear more than once, so convert them to an array if necessary
$result['headers'][$name] = (array) $result['headers'][$name];
$result['headers'][$name][] = trim($val);
} else {
$result['headers'][$name] = trim($val);
}
}
return $result;
}
// $content comes from your code above
$parsed = parse_http_head($content);
print_r($parsed);
/*
Output:
Array
(
[version] => 1.1
[code] => 200
[text] => OK
[headers] => Array
(
[server] => nginx
[x-peep-host] => den2twapi014
[last-modified] => Mon, 15 Aug 2011 03:41:50 GMT
[etag] => "7283847-dbb8-4aa830b1dabf0"
[accept-ranges] => bytes
[content-length] => 56248
[cache-control] => public, max-age=21600
[expires] => Wed, 28 Mar 2012 15:53:57 GMT
[content-type] => image/png
[x-cdn] => AKAM
[date] => Wed, 28 Mar 2012 09:53:57 GMT
[connection] => keep-alive
)
)
*/