使用GetElementsByTagName时有什么方法可以保留html标签吗?

时间:2013-08-29 14:48:48

标签: php domdocument

我有以下代码:

$url = file_get_contents('url');
$webpage = new DOMDocument();
$webpage->loadHTML($url);
$tables = $webpage->getElementsByTagName('table');
echo $tables->item(3)->nodeValue;

当我回应该方法从网页获得的第三个表时,我可以看到没有html标签,但我需要它们,因为<tr>标签具有我在获取元素后正在处理的信息

我一直在寻找解决方案,也许是来自php.net的NodeList类的一些属性,但我什么都没有。

2 个答案:

答案 0 :(得分:0)

这是一个可以用来获取节点的html内容的函数:

function innerHTML(DOMNode $node)
{
    $doc = new DOMDocument();
    foreach ($node->childNodes as $child) {
        $doc->appendChild($doc->importNode($child, true));
    }

    return $doc->saveHTML();
}

答案 1 :(得分:0)

DOMNode DOMNodelist::item ( int $index )需要索引作为参数。索引从0开始。所以第三个应该是索引2.

您可以递归获取内容,例如使用此PHP Manual User Note