PHPでのHTMLパースに悩んだ日々とおさらばさせてくれるはずのsimple_html_dom

jQuery を使い出してからというもの、DOM を意識せずにはいられなくなり、Smarty 使って HTML を書くのもいいんだけど、どうしても jQuery ライクに PHP 上で DOM を操作したいって欲求に駆られる。phpQuery なんてものあったんだけど HTML5 に対応してないとかそもそも開発止まってるっぽくて、いろいろ試してきたけどこれっていうのがなかった。

仕方ないな、正規表現でなんとかすっかと思っていたんだけど、PCRE のエラーどうのみたいになっちゃってやっぱパーサー必要だなーってことであらためて探してみた。

そこでみつけたのが simple_html_dom 。もともとやりたかったのが jquery.lazyload.js の data-original 属性の追加で、それが絡んだ英語の Q&A サイトを見つけた。僕がやりたかったことがまさにそこに書いてあった。data-original 属性を扱うのにちょっとした工夫がいるんだけどそれもそのサイトで解決。答えだけここに書いちゃう。

require_once 'simple_html_dom.php';
$html = str_get_html($html);
$images = $html->find('#main img');
foreach ($images as $image) {
$property = 'data-original';
$image->$property = $image->src;
$image->src = 'ajax-loader.gif';
}
return $html;

かわのくんとは

Web系IT企業でプログラミングやマネジメントをしています。趣味で音楽を少々。

Youtubeでライブ動画配信中

Ustreamでライブ動画配信中

スマートフォン向けにPCサイトを自動変換(コンバート)する『CONV2SP』 CSS作成支援ツール『CSSツクール』