2012-07-19 89 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