【发布时间】:2012-03-24 07:50:38
【问题描述】:
我想提取 html 页面的正文内容及其子页面的 tagNames。我采用了这样的示例 html:
<html>
<head></head>
<body>
<h1>This is H1 tag</h1>
<h2>This is H2 tag</h2>
<h3>This is H3 tag</h3>
</body>
</html>
我已经实现了如下的 php 代码,并且工作正常。
$d=new DOMDocument();
$d->loadHTMLFile('file.html');
$l=$d->childNodes->item(1)->childNodes->item(1)->childNodes;
for($i=0;$i<$l->length;$i++)
{
echo "<".$l->item($i)->nodeName.">".$l->item($i)->nodeValue."</".$l->item($i)->nodeName.">";
}
这段代码工作得非常好,但是当我尝试使用 foreach 循环而不是 for 循环来执行此操作时,nodeName 属性会返回带有每个实际 nodeName 的“#text”。 这是代码
$l=$d->childNodes->item(1)->childNodes->item(1)->childNodes;
foreach ($l as $li) {
echo $li->childNodes->item(0)->nodeName."<br/>";
}
为什么会这样?
【问题讨论】:
标签: php dom html-parsing