Простой шаблон HTML DOM в атрибуте

У меня есть следующие теги

<div class="col *">Text</div> 

* есть что угодно.

Я хочу получить все теги div с атрибутом class, содержащим col (как в моем примере), используя Simple HTML DOM .

Поскольку Simple HTML DOM уже имеет метод для выбора атрибутов, которые содержат определенное значение и | или что-то еще. Например

$html->find("div[class*=col]", 0)->outertext

Или вы могли бы просто получить div узлы, которые начинаются с col как так

$html->find("div[class^=col]", 0)->outertext

И для безопасного хранения вы можете найти все другие способы фильтрации атрибутов в этом стороннем плагине (кстати, есть способы лучше работать с DOM, которые основаны на libxml , окончательный список можно найти здесь )

  1. [attribute] – Соответствует элементам, которые имеют указанный атрибут.
  2. [!attribute] – Соответствует элементам, которые не имеют указанного атрибута.
  3. [attribute=value] – Соответствует элементам, которые имеют указанный атрибут с определенным значением.
  4. [attribute!=value] – Соответствует элементам, которые не имеют указанного атрибута с определенным значением.
  5. [attribute^=value] – Соответствует элементам, которые имеют указанный атрибут, и начинается с определенного значения.
  6. [attribute$=value] – Соответствует элементам с указанным атрибутом и заканчивается определенным значением.
  7. [attribute*=value] – Соответствует элементам с указанным атрибутом и содержит определенное значение.

Источник: http://simplehtmldom.sourceforge.net/manual.htm

У меня нет способа проверить это на данный момент, но, поскольку я заглянул в него ( http://simplehtmldom.sourceforge.net/ ), он должен быть довольно простым.

 $html = file_get_html('http://somesite.net'); foreach($html->find('div') as $div){ if stripos($div->class,"col"){ // this $div has a "col" class.. } } 

или даже проще :

 $html = file_get_html('http://somesite.net'); foreach($html->find('div.col') as $div){ // every $div has a "col" class.. } 

Это работает?