使用PHP从HTML标记中获取子节点列表

时间:2011-12-09 09:42:38

标签: php dom

我目前正在使用PHP DOM从HTML获取BODY标记。

$doc = new DOMDocument();
$doc->loadHTML($HTML);    
$body = preg_replace("/.*<body[^>]*>|<\/body>.*/si", "", $HTML);

上面的代码完全为我提供了给定HTML的body标签的html。

我可以将$body的HTML标记作为数组吗?

1 个答案:

答案 0 :(得分:4)

如果可能的话,我会使用DOM - 它会使您的解决方案更可靠,更清晰。

这应该让你朝着正确的方向前进(我不是为你写的解决方案,对不起):

$html = file_get_contents("http://google.com");
$dom = new DOMdocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

$elements = $xpath->query("//*");


foreach ($elements as $element) {

        echo "<h1>". $element->nodeName. "</h1>";
        $nodes = $element->childNodes;

        foreach ($nodes as $node) {
                echo "<h2>".$node->nodeName. "</h2>";
                echo $node->nodeValue. "\n";
        }

}