2

リモート Web サイトから必要なデータを取得するために PHP curl を使用しています。私が使用したcURL関数は次のとおりです。

function get_content($adr)  
    {  
       $ch = curl_init();  

       curl_setopt ($ch, CURLOPT_URL, $adr);  
       curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
       curl_setopt ($ch, CURLOPT_HEADER, 0);  

       ob_start();  

       curl_exec ($ch);  
       curl_close ($ch);  
       $string = ob_get_contents();  

       ob_end_clean();  

       return $string;      

    }  
$myrul = "http://remoteurl.com";
$result = get_content($myrul);

しかし、どうすれば応答のヘッダーを取得できますか?

4

1 に答える 1

3

上記の私のコメントが正しい場合は、次のように変更します。

curl_setopt($ch, CURLOPT_HEADER, 0);

に:

curl_setopt($ch, CURLOPT_HEADER, 1);

返されたヘッダーを適切に解析します。関数で上記を変更するだけで、ヘッダーコンテンツの両方が返されることに注意してください。ヘッダーのみを返す場合は、次のようにします。

function http_head_curl($url,$timeout=10)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // in seconds
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $res = curl_exec($ch);
    if ($res === false) {
        throw new RuntimeException("cURL exception: ".curl_errno($ch).": ".curl_error($ch));
    }
    return trim($res);
}
于 2012-12-13T14:25:30.743 に答える