是否有任何方法使用Symfony的DomCrawler选择父元素的文本节点?使用Symfony DomCrawler选择文本节点
在jQuery中您可以使用contents()
方法和检查nodeType == 3
是否有任何方法使用Symfony的DomCrawler选择父元素的文本节点?使用Symfony DomCrawler选择文本节点
在jQuery中您可以使用contents()
方法和检查nodeType == 3
据我所知道的,Symfony的履带不允许您遍历文本节点。对于Crawler通常使用的内容,文本节点的深度可能不太常见。
但是,Crawler确实存储文档数据的DOMNodes允许文本节点遍历。
举例来说,如果你想遍历一个履带式的所有节点(包括文本节点)(假设它已经渗透到一个结果),你可以这样做:
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
来检测文本节点。
我知道这个问题是旧的,但我是有这个麻烦太多,想要得到这个答案,因为它突然出现在谷歌相当高。
你是否在寻找像'innerHtml()'被html标签分割的东西?这就是['contents()'](http://api.jquery.com/contents/)是正确的吗? – nifr