2012-07-19 63 views
0

我试图提取标题和描述了网页,使用的DOMDocument()的,我成功在这样提取描述了一个HTML页面

$d=new DOMDocument(); 
$d->loadHTML($html); 
$title=$d->getElementsByTagName("title")->item(0)->textContent; 

提取的头衔,我可以通过循环提取说明通过所有meta tags和检查name="desctiption"属性,但循环使进程变慢,所以想知道是否可以有一个直接的方法来提取内容使用一些属性选择器在PHP DOMdocument?

回答

1

我不认为这可以通过DOM文档单独完成,但它是可能的组合与DOMXPath:

$html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Dom - Xpath test</title> 
<meta name="description" content="The first description meta tag" /> 
<meta name="keywords" content="none, no-keywords" /> 
<meta name="description" content="the second description tag" /> 
</head> 
<body> 
<p>This is the test HTML</p> 
</body> 
</html> 
'; 

$dom = new DOMDocument(); 
$dom->loadHTML($html); 
$domx = new DOMXPath($dom); 
$desc = $domx->query("//meta[@name='description']"); 

$i = 0; 
while ($item = $desc->item($i++)) { 
    echo '<p>'.$item->getAttribute('content').'</p>'; 
} 
2

使用php的get_meta_tags()函数。

你可以那样做:

$d=new DOMDocument(); 
$d->loadHTML($html); 
$title=$d->getElementsByTagName("title")->item(0)->textContent; 
$meta = get_meta_tags($html); 
$description = $meta["description"]; 
+0

这种提取元从一个文件,有关如何使用它的HTML字符串的任何想法? – Sourabh 2012-07-19 12:28:04