簡體   English   中英

使用Symfony DomCrawler選擇文本節點

[英]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
    }
}

有幾點需要注意:

  1. getNode()的調用實際上返回了一個DOMNode(我的IDE中的代碼完成告訴我DOMElement,但DOMNode是一個更安全的賭注,因為它是基類),所以它將它從Crawler的上下文中拉出來; 從這里你需要使用DOMNode屬性和方法。

  2. DOMNode的nodeName屬性是元素的HTML標記名稱,但在文本節點的情況下,它似乎設置為#text 或者,您也可以使用$node instanceof DOMText來檢測文本節點。

我知道這個問題比較老,但我也遇到了這個問題,並希望得到一個答案,因為它在谷歌中出現了很高的水平。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM