I've looked through the other Stackoverflow questions on this topic and none of the solutions provided there seem to work for me.
I have an html page (scraped with file_get_contents()
) and in that html is a div with an id of "main" - I need to get the contents of that div with PHP's DOMDocument, or something similiar. For this situation I can't use the SimpleHTMLDom parser, which complicates things a bit.
DOMDocument + XPath variation:
$xml = new DOMDocument();
$xml->loadHtml($temp);
$xpath = new DOMXPath($xml);
$html = '';
foreach ($xpath->query('//div[@id="main"]/*') as $node)
{
$html .= $xml->saveXML($node);
}
If you're looking for innerHTML()
(PHP DOMDocument Reference Question) - instead of innerXML()
as in this answer - the xpath related variant is given in this answer.
Here the adoption with the changes underlined:
$html = '';
foreach ($xpath->query('//div[@id="main"]/node()') as $node)
######
{
$html .= $xml->saveHTML($node);
####
}
Using DOMDocument...
$dom = new DOMDocument;
$dom->loadHTML($html);
$main = $dom->getElementById('main');
To get the serialised HTML...
html = '';
foreach($main->childNodes as $node) {
$html .= $dom->saveXML($node, LIBXML_NOEMPTYTAG);
}
Use saveHTML()
if your PHP version supports it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With