【PHP】Simple_HTML_DOMの使い方メモ。

自分用。

■HTMLファイルの流し込み方

// 文字列
$html = str_get_html( '<html><head></head><body><p>hoge</p></body></html>' );

// URL
$html = file_get_html( 'http://example.com' );

// HTMLファイル
$html = file_get_html( 'hoge.html' );

■要素の取得方法

// 全てのdiv要素を取得
$res = $html->find('div');

// 見つけたdiv要素の先頭を取得
$res = $html->find('div', 0);

// id="hoge"なdiv要素を取得
$res = $html->find('div[id=hoge]');

// idを持っているdiv要素全てを取得
$res = $html->find('div[id]');

// idを持っている要素全てを取得
$res = $html->find('[id]');

// 全てのdiv要素を取得
$res = $html->find('div');

※基本的にはCSSセレクタと同様の記述が可能。
※find()の第2引数にindexを指定していない場合、マッチした要素が1つであっても結果はつねに配列で返されるため、連結したい場合は必ずindexを指定すること。

例)

$res = $html->find( 'div[id=hoge]', 0)->find( 'div.hoge', 0);

■コンテンツ(中身)を取得する

echo $html->find( 'div', 0)->tag; // Returns: " div"
echo $html->find( 'div', 0)->outertext; // Returns: " <div>foo <b>bar</b></div>"
echo $html->find( 'div', 0)->innertext; // Returns: " foo <b>bar</b>"
echo $html->find( 'div', 0)->plaintext; // Returns: " foo bar"

■メモリを解法する

このライブラリはクッソ重たいのでこまめにメモリを開放して上げる必要がある。
といっても下記メソッドを実行するだけで良い。

$html->clear();

ざっとこんな感じかな。