Simple HTML DOM Parser
PHPのHTML DOM parser、Simple HTML DOM Parser。
jQuery風にアクセス可能で、使用方法も簡単です。
- 本家
http://simplehtmldom.sourceforge.net/
- ダウンロード
使い方
- 要素の取得
ベースとなるHTMLはURL、ファイル、文字列から取得できます。
require_once("simple_html_dom.php"); // URLからDOM作成 $html = file_get_html('http://www.google.com/'); // IMGタグ foreach($html->find('img') as $element) { echo $element->src . '<br>'; } // Aタグ foreach($html->find('a') as $element) { echo $element->href . '<br>'; }
- JQuery風に操作できるFind
// Find all anchors, returns a array of element objects $ret = $html->find('a'); // Find (N)th anchor, returns element object or null if not found (zero based) $ret = $html->find('a', 0); // Find all <div> which attribute id=foo $ret = $html->find('div[id=foo]'); // Find all <div> with the id attribute $ret = $html->find('div[id]'); // Find all element has attribute id $ret = $html->find('[id]');
- 要素の書き換え
// 文字列から構築 $html = str_get_html('<div id="hoge">HOGE</div><div id="fuga">FUGA</div>'); // 1番目のdivのclass="bar"を追加 $html->find('div', 1)->class = 'bar'; // 0番目のdivのテキストをfooに $html->find('div[id=foo]', 0)->innertext = 'foo'; $str = $html->save(); // <div id="hoge">foo</div><div id="fuga" class="bar">FUGA</div>
取得するDOMは循環参照となるため、開放する必要があります。
// HTMLの文字列から構築 $html = str_get_html($contents); // jquery風に記述可能。ここでは、Aタグを取得 $cts = $html->find('div[class=productTitle] a'); foreach($cts as $c) { $req_value['url'] = $c->attr['href']; $req_result[] = $req_value; } $html->clear(); // 循環参照なので開放されない。clear()を実行 var_dump($req_value);