Я хочу получить теги с атрибутом «class», равным «someclass», но только те теги, которые не определили атрибут «id».
Я попробовал следующее (на основе этого ответа), но не работал:
$html->find('.someclass[id!=*]');
Заметка:
Я использую простой класс HTML DOM и в базовой документации, которую они дают, я не нашел то, что мне нужно.
Простой класс HTML DOM не поддерживает псевдо-классы CSS3, необходимые для сопоставления отрицательных атрибутов.
Это легко обойти ограничения без особых проблем.
$nodes = array_filter($html->find('.something'), function($node){return empty($node->id);});
Из PHP Simple HTML DOM Parser Manual в разделе « Как найти HTML-элементы»? , мы можем читать:
[! attribute] Соответствует элементам, которые не имеют указанного атрибута.
Ваш код станет следующим:
$html->find('.someclass[!id]');
Это будет соответствовать элементам класса someClass
, у которых нет атрибута id
.
Мой первоначальный ответ был основан на выборе элементов, как и в случае с jQuery, поскольку простой HTML DOM Parser утверждает, что поддерживает их на главной странице, где мы можем прочитать:
Найти теги на странице HTML с селекторами, как jQuery.
Мои искренние извинения перед теми, кто был оскорблен моим первоначальным ответом и выразил свое недовольство в комментариях!