加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

在PHP DOM中选择所选节点的下一个节点?

发布时间:2020-12-13 13:10:22 所属栏目:PHP教程 来源:网络整理
导读:到目前为止,我正在处理这样的 HTML文件 div name="node"/divdiv/divdiv name="node"/divdiv/divdiv name="node"/divdiv/div 我想选择每个“div”的下一个节点,其名称等于“node”,我尝试: $dom = new DOMdocument();@$dom-loadHTML($html);$xpath = new DOM
到目前为止,我正在处理这样的 HTML文件
<div name="node"></div>
<div></div>
<div name="node"></div>
<div></div>
<div name="node"></div>
<div></div>

我想选择每个“div”的下一个节点,其名称等于“node”,我尝试:

$dom = new DOMdocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

$els = $xpath->query("//div[@name='node']");

$j = 0;

foreach($els as $el)
{
    if($el->next_sibling()) $j++;
}

echo $j;

但我只是得到一个错误

Fatal error: Call to undefined method DOMElement::next_sibling()

谁能告诉我我的剧本有什么问题?

错误很明显:没有方法DOMElement :: next_sibling().阅读 documentation for DOMElement及其父类 DOMNode.您正在考虑属性DOMNode :: nextSibling.

但是,nextSibling获取下一个节点,而不是下一个元素. (没有DOM方法或属性可以获取下一个元素.你需要继续使用nextSibling并检查nodeType,直到你点击另一个元素.)你的问题是你想要下一个节点,但我想你可能真的想要下一个元素(空< div>).这实际上很容易用XPath做,所以为什么不这样做呢?

要立即得到它:

$els = $xpath->query("//div[@name='node']/following-sibling::*[1]");

当你已经有一个< div name =“node”>时获得它:

$nextelement = $xpath->query("following-sibling::*[1]",$currentdiv);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读