У меня есть следующие теги
<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 , окончательный список можно найти здесь )
[attribute] – Соответствует элементам, которые имеют указанный атрибут. [!attribute] – Соответствует элементам, которые не имеют указанного атрибута. [attribute=value] – Соответствует элементам, которые имеют указанный атрибут с определенным значением. [attribute!=value] – Соответствует элементам, которые не имеют указанного атрибута с определенным значением. [attribute^=value] – Соответствует элементам, которые имеют указанный атрибут, и начинается с определенного значения. [attribute$=value] – Соответствует элементам с указанным атрибутом и заканчивается определенным значением. [attribute*=value] – Соответствует элементам с указанным атрибутом и содержит определенное значение. У меня нет способа проверить это на данный момент, но, поскольку я заглянул в него ( 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.. }
Это работает?