[英]Select text nodes with 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
來檢測文本節點。
我知道這個問題比較老,但我也遇到了這個問題,並希望得到一個答案,因為它在谷歌中出現了很高的水平。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.