PHP Simple HTML DOM Parserでhtml要素の取得

ここではhtml要素をjQueryのように取得してくれるPHP Simple HTML DOM Parserの紹介をしていきます。

PHP Simple HTML DOM Parserをダウンロード
http://simplehtmldom.sourceforge.net/

サンプルソース

<?php
  
    require_once('simple_html_dom.php');
  
    // html読み込み
    $html = str_get_html('<html><body>Hello World</body></html>');
     
    // URLから読み込み
    $html = file_get_html('http://example.com');
     
    // ファイルから読み込み
    $html = file_get_html('sample.html');
     
    // body内0番目のaタグ内を取得
    $value = $html->find('body a', 0)->innertext;
     
    // body内0番目のaタグごと取得
    $value = $html->find('body a', 0)->outertext;
     
    // body内0番目のaタグhref属性を取得
    $value = $html->find('body a', 0)->href;
     
    // 全てのaタグを配列で取得
    $data = $html->find('body a');
    $value = $data[0]->innertext;
     
    // idやclassなどでも指定
    $data = $html->find('#foo');
    $data = $html->find('.bar');
     
    // メモリリークを回避
    $html->clear();

解説

$html = str_get_html(); (6行目)
htmlを読み込みます。

$html = file_get_html(‘http://example.com’); (9行目)
URLからも読み込めます。

$html = file_get_html(‘sample.html’); (12行目)
ファイルからも読み込めます。

$value = $html->find(‘body a’, 0)->innertext; (15行目)
findでjQueryのようにタグ内の要素を取得することが出来ます。

$value = $html->find(‘body a’, 0)->outertext; (18行目)
outertextとすることで、タグを含めた取得も出来ます。

$value = $html->find(‘body a’, 0)->href; (21行目)
hrefと指定することで、aタグ、href要素を指定することも出来ます。

$data = $html->find(‘body a’); (24行目)
->find(‘body a’);と指定することでaタグの要素を全て配列で取得することができます。

$data = $html->find(‘#foo’); (28、29行目)
idやclassなどのターゲットで指定することも出来ます。

$html->clear(); (32行目)
htmlを生成しすぎるとメモリリークに陥ってしまうので、コールしてください。

画像読み込みのサンプルソース

<?php
  
    require_once('simple_html_dom.php');
     
    // URLから読み込み
    $html = file_get_html('http://example.com');
     
    $value = $html->find('body img', 0)->src;
    $data = file_get_contents($value);
    file_put_contents('dl.jpg', $data);

少し応用をすれば画像ファイルも取り込むことができます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*