【发布时间】:2011-07-06 06:56:00
【问题描述】:
有没有一种方法可以使用 curl 以便您可以执行与 php 中的 get_meta_tags() 函数等效的操作?专门用于在 php 中使用 curl 以尽可能少的开销获取外部站点的元标记
【问题讨论】:
有没有一种方法可以使用 curl 以便您可以执行与 php 中的 get_meta_tags() 函数等效的操作?专门用于在 php 中使用 curl 以尽可能少的开销获取外部站点的元标记
【问题讨论】:
有没有办法使用 curl 让你可以做一些相当于 php 中的 get_meta_tags() 函数的事情
不,我不这么认为。
最好的方法是获取数据,并使用HTML parser 解析它。或者,user contributed notes in the manual.
中有几种基于正则表达式的方法【讨论】:
is there a way to use curl such that you can do something that is equivalent to the get_meta_tags() function in php? 正确答案仍然是否。
function file_get_contents_curl($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$html = file_get_contents_curl("http://www.example.com");
//parsing begins here:
$doc = new DOMDocument();
@$doc->loadHTML($html);
$nodes = $doc->getElementsByTagName('title');
//get and display what you need:
$title = $nodes->item(0)->nodeValue;
$metas = $doc->getElementsByTagName('meta');
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');
if($meta->getAttribute('language') == 'language');
$language = $meta->getAttribute('language');
}
echo "Title: $title". '<br/><br/>';
echo "Description: $description". '<br/><br/>';
echo "Keywords: $keywords";
【讨论】: