TRY AND ERROR

気になったこと、勉強したこと、その他雑記など色々メモしていきます。。Sometimes these posts will be written in English.,

phpQueryでタグの破片などのノイズを除きつつテキストっぽいものだけを取得する。

とりあえず行き着いた方法をメモします。
htmlによっては、先頭にxmlステートメントが混ざってくる場合が稀にあるので、最初に除去しておく。
さらに、なぜかscriptやstyleの破片などがノイズとして紛れ込むケースが多々あるので、これらも除去。

newDocumentする前の下ごしらえが結構重要なので、この辺のチューニングが鍵になります。

// Remove xml statement.
$html = preg_replace('/^<\?xml.*\?>/', '', $html);
// Remove noises.
$html = preg_replace(array("/\r/","/\n/","/\r\n/","/<br \/>/","/<br>/","/<script.*?\/script>/","<style.*?\/style>","/ /"),"",$html);

$doc = phpQuery::newDocument($html);
$title = $doc["title"]->text();
$body = $doc['body']->text();