最初はZend_Dom_Queryを使おうとしたけど、これはユニットテスト用に作られただけなのでDOM操作には使えない。PHP標準のDOMDocumentは文字コードの指定がよくわからないので使いにくい。
というわけでこれを使ってみた。
Callbackクラスが名前衝突したので、Callback.phpを読み込まないようにした。
でも日本語が問題なく使えるので採用。
http://code.google.com/p/phpquery/
サンプル
$phpQuery = phpQuery::newDocument($body);
// imgを画像変換スクリプトを通すように変換
foreach ($phpQuery->find('img') as $img){
$src = $img->getAttribute('src');
$parsed = parse_url($src);
$img->setAttribute('src',
$this->convertScript . $parsed['path']);
}
// youtube埋込を外部リンクに変換
foreach ($phpQuery->find('div.module_plugin_youtube') as $div){
$youtube = pq($div);
$value = $youtube->find('object param')->attr('value');
$youtube->html(
'[Youtube]');
}
return $phpQuery;