gpt4 book ai didi

php DOMDocument nodeName 属性返回 '#text' 和 nodeName

转载 作者:可可西里 更新时间:2023-10-31 22:05:53 26 4
gpt4 key购买 nike

我想提取 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 属性返回“#text”以及每个实际的 nodeName。这是代码

$l=$d->childNodes->item(1)->childNodes->item(1)->childNodes;
foreach ($l as $li) {
echo $li->childNodes->item(0)->nodeName."<br/>";
}

为什么会这样?

最佳答案

当我遇到这个问题时,它已通过执行以下操作得到解决。

$xmlDoc = new DOMDocument();
$xmlDoc->preserveWhiteSpace = false; // important!

您可以跟踪您的 $node->nodeType 以查看差异。我得到 3、1、3,即使只有一个节点(子节点)。关闭空白,现在我只得到 1。

GL.

关于php DOMDocument nodeName 属性返回 '#text' 和 nodeName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9590398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com