Simple HTML DOM Parserで特定の属性値を持つものを取得

2011/05/11

Simple HTML DOM Parserでalt属性の値が「xxx」のものだけやtitle属性の値「xxx」だけとか取得したい。

特定の属性を持っている全部のタグの属性値を取得

例えばbodyタグ内にあるすべてのタグを対象に、alt属性を保有しているタグのalt属性の値を取得する。

  1. $attr = $dom->find('body *[alt]');
  2. foreach( $attr as $val){
  3.   $str[] = $val->alt;
  4. }

特定の属性値を持っている全部のタグの属性値を取得

例えばbodyタグ内にあるすべてのタグを対象に、alt属性を保有しており、その値が「recatnap」であるタグのalt属性の値を取得する。

  1. $attr = $dom->find('body *[alt=recatnap]');
  2. foreach( $attr as $val){
  3.   $str[] = $val->alt;
  4. }

特定の属性値を持っていない全部のタグの属性値を取得

例えばbodyタグ内にあるすべてのタグを対象に、alt属性を保有しており、その値が「recatnap」ではないタグのalt属性の値を取得する。

  1. $attr = $dom->find('body *[alt!=recatnap]');
  2. foreach( $attr as $val){
  3.   $str[] = $val->alt;
  4. }

特定の属性を持ち、その値がNULLではない全部のタグの属性値を取得

例えばbodyタグ内にあるすべてのタグを対象に、alt属性を保有しており、その値が「NULL」ではないタグのalt属性の値を取得する。

「*[alt!=NULL]とやればいいじゃん」と思いきやダメっぽい。
「じゃぁ、*[alt!=””]とやればいいじゃん」と思いきやこれもダメっぽい。
面倒だけど一手間かける。

  1. $attr = $dom->find('body *[alt]');
  2. foreach( $attr as $val){
  3.   if( $val->alt !== “” ){
  4.     $str[] = $val->alt;
  5.   }
  6. }

新着(ニュース関連以外)

2017-11-09
PCでプッシュ通知ってのをしたい。
2017-11-06
PHPのバージョンを上げたらwikiが壊れたっぽい。
2017-08-03
formのinputでmaxlengthを使うとFirefoxでバグってた。他のブラウザでも気づかずにバグってたかもしれない。
2017-07-19
折れ線グラフをもう少しゆるやかに・・・というか何というか・・・調べていくと「移動平均」っていう言葉にたどり着いた
2017-07-10
FuelPHPの1.8をダウンロードして使っていたらセッションが使えないということに気付いた。