2011-12-09 37 views
2

我目前使用PHP DOM從HTML獲取BODY標記。使用PHP獲取HTML標記內的子節點列表

$doc = new DOMDocument(); 
$doc->loadHTML($HTML);  
$body = preg_replace("/.*<body[^>]*>|<\/body>.*/si", "", $HTML); 

上述代碼完全給出了給定HTML的body標籤中的html。

我可以用$body作爲數組獲得HTML標籤嗎?

+0

歡迎堆棧溢出。您可以使用工具欄按鈕格式化源代碼。這次我爲你做了。 –

+0

謝謝。我實際上錯過了它。 –

回答

4

如果可能的話,我會使用DOM - 它會使您的解決方案使用更可靠和更清潔。

這應該讓你朝着正確的方向(我不寫你的解決方案,不好意思):

$html = file_get_contents("http://google.com"); 
$dom = new DOMdocument(); 
@$dom->loadHTML($html); 
$xpath = new DOMXPath($dom); 

$elements = $xpath->query("//*"); 


foreach ($elements as $element) { 

     echo "<h1>". $element->nodeName. "</h1>"; 
     $nodes = $element->childNodes; 

     foreach ($nodes as $node) { 
       echo "<h2>".$node->nodeName. "</h2>"; 
       echo $node->nodeValue. "\n"; 
     } 

} 
+0

你能舉個例子說明我如何用DOM做到這一點。我上面編輯了我的代碼。你能舉個例子嗎? –

+0

@AbishekRSrikaanth看到我的編輯。 – Prisoner

+0

謝謝囚徒,這有幫助 –

相關問題