0

カールのみを使用してヘッドのコンテンツをロードしたいのですが、現在はiamを使用しています

<?php 

$url="www.facebook.com";

$title='';$keywords='';$description='';
    $ch = curl_init();
$timeout=5;
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, 'http://'.$url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt ($ch, CURLOPT_TIMEOUT,0);

    $html = curl_exec($ch);
    curl_close($ch);
echo htmlspecialchars($html);//gives the complete source.Why?

//parsing begins here:
$doc = new DOMDocument();
@$doc->loadHTML($html);

$nodes = $doc->getElementsByTagName('title');
$metas = $doc->getElementsByTagName('meta');

if($nodes->length>0)$title = $nodes->item(0)->nodeValue;

for ($i = 0; $i < $metas->length; $i++)
{
    $meta = $metas->item($i);
    if($meta->getAttribute('name') == 'description')
        $description = $meta->getAttribute('content');
    if($meta->getAttribute('name') == 'keywords')
        $keywords = $meta->getAttribute('content');
}
echo $title. '<br/>';
echo "&nbsp;&nbsp;&nbsp;&nbsp;$description". '<br/>';
echo "&nbsp;&nbsp;&nbsp;&nbsp;$keywords";
?>

このコードはURLの完全なコードを返しますが、headだけが必要です。ここではcurlopt_writefunction()を使用する必要がないため、前の質問と関連付けないでください。

4

2 に答える 2

0

CURLOPT_HEADERは0ではなくTRUEである必要があります

CURLOPT_NOBODYはTRUEである必要があります

curl_setopt($ch, CURLOPT_NOBODY, TRUE);
于 2012-05-26T15:33:48.793 に答える
0

名前は類似していますが、HEADERはhtml<head>に対応しておらず、BODYもhtmlに対応していません<body>CURLOPT_HEADER戻り値にhttpヘッダーを含めることを意味します。CURLOPT_NOBODY戻り値にhttpペイロードを含めないことを意味します(content-type:text / htmlのhttp応答のペイロードはhtmlドキュメント全体になります)。

于 2012-05-27T16:16:00.500 に答える