2011-06-20 23 views
6

このトピックに関する他のStackoverflowの質問を見てきましたが、そこで提供されている解決策はありません。PHPのDOMを使ってdivの内容を取得する

私はhtmlページ(file_get_contents()で刻んでいる)を持っていて、そのHTMLはIDが "main"のdivです - 私はそのdivの内容をPHPのDOMDocumentなどで取得する必要があります。このような状況では、SimpleHTMLDomパーサーを使用することはできません。これは少し複雑です。お使いのPHPのバージョンがサポートしている場合は

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

使用saveHTML() ...シリアル化されたHTMLを取得するにはDOMDocument ...

$dom = new DOMDocument; 

$dom->loadHTML($html); 

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

を使用して

+0

あなたは*、私はあなたがHTML意味だというのdiv *の内容を取得する必要があると言うとき? – alex

+0

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

答えて

5

のDOMDocument + 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

素晴らしく、大変感謝しています。 –

関連する問題