Это мой пример скрипта:
$html = <<<HTML <div class="main"> <div class="text"> Capture this text 1 </div> <div class="date"> May 2010 </div> </div> <div class="main"> <div class="text"> Capture this text 2 </div> <div class="date"> June 2010 </div> </div> HTML; $dom = new DOMDocument(); $dom->loadHTML($html); $xpath = new DOMXPath($dom); $tags = $xpath->query('//div[@class="main"]'); foreach ($tags as $tag) { print_r($tag->nodeValue."\n"); }
Это позволит:
Capture this text 1 May 2010 Capture this text 2 June 2010
Но мне это нужно:
<div class="text"> Capture this text 2 </div> <div class="date"> June 2010 </div>
Или, по крайней мере, вы можете сделать что-то подобное в моем цикле foreach:
$text = $tag->query('//div[@class="text"]')->nodeValue; $date = $tag->query('//div[@class="date"]')->nodeValue;
Ну, nodeValue
даст вам значение узла. Вы хотите, что обычно называется outerHTML
echo $dom->saveXml($tag);
будет выводить то, что вы ищете, в способе X (HT) ML.
Начиная с PHP 5.3.6 вы также можете передать узел saveHtml
, который ранее не был возможен:
echo $dom->saveHtml($tag);
Последний будет подчиняться синтаксису HTML4. Спасибо Артефакто за это.
попробуй это
$dom = new DOMDocument(); $dom->loadHTML($html); $xpath = new DOMXPath($dom); $tags = $xpath->query('//div[@class="main"]'); foreach ($tags as $tag) { $innerHTML = ''; $children = $tag->childNodes; foreach ($children as $child) { $tmp_doc = new DOMDocument(); $tmp_doc->appendChild($tmp_doc->importNode($child,true)); $innerHTML .= $tmp_doc->saveHTML(); } var_dump(trim($innerHTML)); }
-Паскаль МАРТИН