2011-06-20 73 views
6

我已經查看了關於此主題的其他Stackoverflow問題,並且沒有提供的解決方案似乎適用於我。使用PHP的DOM獲取div的內容

我有一個HTML頁面(與file_get_contents()刮),並在該HTML是一個ID爲「主」的div - 我需要獲得與PHP的DOMDocument該div的內容,或類似的東西。對於這種情況,我不能使用SimpleHTMLDom解析器,這會使事情變得複雜一些。

+0

當你說·我需要得到該div *的意思一個HTML中的內容是什麼? – alex

+0

[DOMElement getElementById(string $ elementId)](http://php.net/manual/en/class.domdocument.php) – Ibu

回答

5

DOM文檔+ XPath的變化:

$xml = new DOMDocument(); 
$xml->loadHtml($temp); 
$xpath = new DOMXPath($xml); 

$html = ''; 
foreach ($xpath->query('//div[@id="main"]/*') as $node) 
{ 
    $html .= $xml->saveXML($node); 
} 

如果您正在尋找innerHTML() (PHP DOMDocument Reference Question) - 而不是innerXML()在這個答案 - 在XPath的相關變體給出in this answer

這裏通過與變化強調:

$html = ''; 
foreach ($xpath->query('//div[@id="main"]/node()') as $node) 
              ###### 
{ 
    $html .= $xml->saveHTML($node); 
         #### 
} 
+0

奇妙地工作,非常感謝。 –

3

使用DOMDocument ...

$dom = new DOMDocument; 

$dom->loadHTML($html); 

$main = $dom->getElementById('main'); 

要獲得序列化的HTML ...

html = ''; 
foreach($main->childNodes as $node) { 
    $html .= $dom->saveXML($node, LIBXML_NOEMPTYTAG); 
} 

使用saveHTML()如果你的PHP版本支持。