У меня есть следующие теги
<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.. }
Это работает?