使用PHP的DOM获取div的内容

时间:2011-06-20 00:59:53

标签: php domdocument

我已经查看了有关此主题的其他Stackoverflow问题,并且那里提供的解决方案似乎都不适用于我。

我有一个html页面(用file_get_contents()抓取)并且html是一个id为“main”的div - 我需要用PHP的DOMDocument或类似的东西获取该div的内容。对于这种情况,我不能使用SimpleHTMLDom解析器,这会使事情变得复杂。

2 个答案:

答案 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()