Simple HTML DOM Parserで特定の属性値を持つものを取得
2011/05/11
Simple HTML DOM Parserでalt属性の値が「xxx」のものだけやtitle属性の値「xxx」だけとか取得したい。
特定の属性を持っている全部のタグの属性値を取得
例えばbodyタグ内にあるすべてのタグを対象に、alt属性を保有しているタグのalt属性の値を取得する。
- $attr = $dom->find('body *[alt]');
- foreach( $attr as $val){
- $str[] = $val->alt;
- }
特定の属性値を持っている全部のタグの属性値を取得
例えばbodyタグ内にあるすべてのタグを対象に、alt属性を保有しており、その値が「recatnap」であるタグのalt属性の値を取得する。
- $attr = $dom->find('body *[alt=recatnap]');
- foreach( $attr as $val){
- $str[] = $val->alt;
- }
特定の属性値を持っていない全部のタグの属性値を取得
例えばbodyタグ内にあるすべてのタグを対象に、alt属性を保有しており、その値が「recatnap」ではないタグのalt属性の値を取得する。
- $attr = $dom->find('body *[alt!=recatnap]');
- foreach( $attr as $val){
- $str[] = $val->alt;
- }
特定の属性を持ち、その値がNULLではない全部のタグの属性値を取得
例えばbodyタグ内にあるすべてのタグを対象に、alt属性を保有しており、その値が「NULL」ではないタグのalt属性の値を取得する。
「*[alt!=NULL]とやればいいじゃん」と思いきやダメっぽい。
「じゃぁ、*[alt!=””]とやればいいじゃん」と思いきやこれもダメっぽい。
面倒だけど一手間かける。
- $attr = $dom->find('body *[alt]');
- foreach( $attr as $val){
- if( $val->alt !== “” ){
- $str[] = $val->alt;
- }
- }