Вопрос по parsing, css-selectors, php – простой HTML дом: как получить тег без определенного атрибута

5

Я хочу получить теги с & quot; классом & quot; атрибут, равный «некоторому классу» но только те теги, которые не определили атрибут "id".

I tried следующее (на основе этого ответа), но не сработало:

$html->find('.someclass[id!=*]');

Note:

Я используюПростой HTML DOM класс и в основной документации, которую они дают, я не нашел то, что мне нужно.

Для селекторов CSS3 попробуйтеcode.google.com/p/phpquery h0tw1r3

Ваш Ответ

2   ответа
5

PHP Simple HTML DOM Parser Руководство пользователя, подКак найти элементы HTML?мы можем прочитать:

[!attribute] Matches elements that don't have the specified attribute.

Your code would become:

$html->find('.someclass[!id]');

Это будет соответствовать элементам с классомsomeClass которые не имеютid приписывать.

Мой первоначальный ответ основывался на выборе элементов, как и в случае с jQuery, поскольку Simple HTML DOM Parser утверждает, что поддерживает ихГлавная страница где мы можем прочитать:

Find tags on an HTML page with selectors just like jQuery.

My sincere apologies to those who were offended by my original answer and expressed their displeasure in the comments!

Error: User Rate Limit Exceeded leticia
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded leticia
3

Простой HTML DOM класс не поддерживаетсяCSS3 псевдо-классы который необходим для отрицательного соответствия атрибута.

Это просто обойти ограничение без особых проблем.

$nodes = array_filter($html->find('.something'), function($node){return empty($node->id);});
$nodes = array_filter($html->find('.something'), function($node){return (!empty($node->id) && $node->id != 'some_id');});
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы