我已经查看了有关此主题的其他Stackoverflow问题,并且那里提供的解决方案似乎都不适用于我。
我有一个html页面(用file_get_contents()
抓取)并且html是一个id为“main”的div - 我需要用PHP的DOMDocument或类似的东西获取该div的内容。对于这种情况,我不能使用SimpleHTMLDom解析器,这会使事情变得复杂。
答案 0 :(得分:6)
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);
####
}
答案 1 :(得分:3)
使用DOMDocument ...
$dom = new DOMDocument;
$dom->loadHTML($html);
$main = $dom->getElementById('main');
获取序列化HTML ...
html = '';
foreach($main->childNodes as $node) {
$html .= $dom->saveXML($node, LIBXML_NOEMPTYTAG);
}
如果您的PHP版本支持,请使用saveHTML()
。