2012-03-28 26 views
8

này hoạt động tuyệt vời để có được những tiêu đềNhận Content-Type từ cURL

$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); 

trở

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 

cách tốt nhất để echo ra Content-Type: là gì?

Trả lời

16

Hãy thử điều này: -

<?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); 
    ?> 
+0

Cảm ơn! Bạn có biết nếu có một danh sách các loại nội dung hợp lệ, chủ yếu cho hình ảnh, nhưng sẽ là tốt để biết tất cả. – daidai

+0

Tìm thấy nó http://en.wikipedia.org/wiki/Mime_type – daidai

4

Trước khi bạn gọi curl_close(), gọi curl_getinfo():

$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); 
echo $contentType; 

Ngoài ra, nếu bạn muốn có một mảng phân tích cú pháp của người đứng đầu, đây là một giải pháp nhanh chóng và dơ bẩn (Chú ý: đây không có gì để xác nhận rằng chuỗi cung cấp thực sự là một câu trả lời HTTP, sử dụng một cách thận trọng):

<?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 
     ) 

) 

*/