2015-05-08 69 views
6

使用Dom Crawler獲取文本(不帶標籤)。Symfony 2 Dom Crawler:如何在元素中只獲取文本()

$html = EOT<<< 
    <div class="coucu"> 
    Get Description <span>Coucu</span> 
    </div> 
EOT; 

$crawler = new Crawler($html); 
$crawler = $crawler->filter('.coucu')->first()->text(); 

輸出:獲取描述Coucu

我想輸出(只):獲取描述

UPDATE:

我找到了一個解決方案:(但這真的很糟糕)

... 
$html = $crawler->filter('.coucu')->html(); 
// use strip_tags_content in https://php.net/strip_tags 
$html = strip_tags_content($html,'span'); 
+0

的可能重複[jQuery的 - 獲取元素文本沒有子女的文本(http://stackoverflow.com/questions/11362085/jquery-get-text-for-element-without -children-text) –

+0

不,我不使用jQuery – VoTue

+0

我不認爲有這種方法,但你可以嘗試$ text = $ crawler-> filter('。coucu') - > first() - >提取物(陣列( '_文本'));我相信它會返回相同的結果,但仍值得一拍 –

回答

2

根據你的問題中的標準,我想你會通過修改你的CSS選擇器,提供最好的服務:$crawler = $crawler->filter('div.coucu > span')

從那裏,你可以去$span_text = $crawler->text();

或者把事情簡單化:$text = $crawler->filter('div.coucu > span')->text();

text() method返回列表中第一個項目的值。

+0

我想獲得「Get Description Coucu」。 – VoTue

2

跑到相同的情況。我結束了去:

$html = $crawler->filter('.coucu')->html(); 
$html = explode("<span", $html); 
echo trim($html[0]);