2010-04-07 62 views
2

我的PHP代碼如何處理DOM在PHP

$dom = new DOMDocument(); 
@$dom->loadHTML($file); 

$xpath = new DOMXPath($dom); 
$tags = $xpath->query('//div[@class="text"]'); 

foreach ($tags as $tag) { 
    echo $tag->textContent; 
} 

我想在這裏做的是讓擁有一流的「文」,但這個問題時,我環和呼應的div內容結果我只拿到文本我無法獲取帶有圖像的HTML代碼,並且所有的HTML代碼都像p,br,img ...等,我試圖使用$tag->nodeValue;,但也沒有任何結果。

回答

2

個人而言,我喜歡Simple HTML Dom Parser

include "lib.simple_html_dom.php" 

$html = str_get_html($file); 
foreach($html->find('div.text') as $e){ 
    echo $e->innertext; 
} 

很簡單吧?它容納選擇器,如jQuery :)

1

我發現這個片段在http://www.php.net/manual/en/class.domelement.php

<?php 
function getInnerHTML($Node) 
{ 
    $Body = $Node->ownerDocument->documentElement->firstChild->firstChild; 
    $Document = new DOMDocument();  
    $Document->appendChild($Document->importNode($Body,true)); 
    return $Document->saveHTML(); 
} 
?> 

,如果不知道它的工作原理,但。

2

你需要做的是創建一個臨時文件,將元素添加到,然後使用saveHTML()

foreach ($tags as $tag) { 
    $doc = new DOMDocument; 
    $doc->appendChild($doc->importNode($tag, true)); 
    $html = $doc->saveHTML(); 
}