php domcrawler,php – 使用Symfony DomCrawler选择文本节点

有没有办法使用Symfony的DomCrawler选择父元素的文本节点?

在jQuery中,您可以使用contents()方法并检查nodeType == 3

解决方法:

据我所知,Symfony Crawler不允许您遍历文本节点.对于Crawler通常使用的内容,与文本节点一样深入可能并不常见.

但是,Crawler真正存储文档数据的DOMNode确实允许文本节点遍历.

例如,如果要循环遍历Crawler的所有节点(包括文本节点)(假设它已经过滤到一个结果),您可以执行以下操作:

foreach ($crawler->getNode(0)->childNodes as $node) {

if ($node->nodeName === '#text') {

// you have a text node

}

}

有几点需要注意:

>对getNode()的调用实际上返回了一个DOMNode(我的IDE中的代码完成告诉我DOMElement,但DOMNode是一个更安全的赌注,因为它是基类),所以它将它从Crawler的上下文中拉出来;从这里你需要使用DOMNode属性和方法.

> DOMNode的nodeName属性是元素的HTML标记名称,但对于文本节点,它似乎设置为#text.或者,您也可以使用$node instanceof DOMText来检测文本节点.

我知道这个问题比较老,但我也遇到了这个问题,并希望得到一个答案,因为它在谷歌中出现了很高的水平.

标签:php,dom,symfony

来源: https://codeday.me/bug/20190529/1175931.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值