Get Content-Type from cURL Get Content-Type from cURL curl curl

Get Content-Type from cURL


Try this:-

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


Before you call curl_close(), call curl_getinfo():

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

Alternatively, if you want a parsed array of the head, here is a quick and dirty solution (WARNING: this does nothing to validate that the supplied string actually is an HTTP response, use with caution):

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