Есть ли способ получить HTML (и JavaScript), содержащийся в элементе div?
Я не разработчик PHP, но я нашел это:
function getNodeInnerHTML(DOMNode $oNode) { $oDom = new DOMDocument(); foreach($oNode->childNode as $oChild) { $oDom->appendChild($oDom->importNode($oChild, true)); } return $oDom->saveHTML(); }
с http://www.sitepoint.com/forums/showthread.php?p=4225203
Я не думаю, что вы можете выбрать контент, включая только XPath, поэтому может понадобиться функция, подобная приведенной выше. И затем вы выбираете свой div как //div[@id='someID']
и т. Д.
$xml=new DOMDOCUMENT(); @$xml->loadHTML($htmlcontents); $xpath=new DOMXPATH($xml); $nodes=$xpath->query($xpath); function getHtml($nodes) { $result = ''; foreach ($nodes as $node) { $result .= $node->ownerDocument->saveHtml($node); } return $result; }
Источник: как получить innerhtml по имени или имени, используя php
Теперь о:
// div [@ id = 'ваш div']
Если вы не заботитесь о производительности?
Это даст вам внешнийHTML, а не innerHTML, но вы можете легко разделить дополнительные теги DIV на обоих концах.
Рабочий пример:
$xpath = new DOMXPath( @DOMDocument::loadHTML($the_html_code) ) ; $domElement = $xpath->evaluate("//div[@id='ID_of_the_div']")->item(0) ; $outerHTML = $domElement->ownerDocument->saveXML($domElement) ;