2016-06-01 8 views
1

私は、文書内のすべてのテキストを取得するためにSymfony DomCrawlerを使用しています。HTML文書内のすべてのTEXT要素を取得する方法

$this->crawler->filter('p')->each(function (Crawler $node, $i) { 
    // process text 
}); 

要素の外にある<body>内のすべてのテキストを収集しようとしています。

<body> 
    This is an example 
    <p> 
     blablabla 
    </p> 
    another example 
    <p> 
     <span>Yo!</span> 
     again, another piece of text <br/> 
     with an annoy BR in the middle 
    </p> 
</body> 

私はPHPのSymfonyを使用しており、XPath(推奨)またはRegExを使用できます。ドキュメント内のすべてのテキストノードは次のようになり

string(/) 

+0

私はsymfonyのDomCrawlerについて知っているが、XPathのテキストノードを取得するためだろう ''内で直接であることはありません: '//ボディ/テキスト()'(一部のXPathプロセッサは、しかし戻ってテキストノードをサポートしていません) – har07

+0

これはネストされた要素のテキストを考慮に入れていますか? –

+1

いいえ、あなたがそれらに行っても、別の '/': '// body // text()'を追加するだけです。 – har07

答えて

0

文書全体の文字列値は、この単純なXPathので得ることができる

//text() 

bodyの即時テキストノードの子だろう次のとおりです。

/body/text() 

テキストノードを選択するXPathsは、通常、文脈に応じて、連結された文字列値に変換されます。

関連する問題