PHP xpath содержит класс и не содержит класс

Название подводит итог. Я пытаюсь запросить HTML файл для всех тегов div, которые содержат класс result и не содержит класс grid.

<div class="result grid">skip this div</div>
<div class="result">grab this one</div>

Спасибо!

Ответы

Ответ 1

Это должно сделать это:

<?
    $doc = new DOMDocument();
    $doc->loadHTMLFile('test.html');

    $xpath = new DOMXPath($doc);
    $nodeList = $xpath->query("//div[contains(@class, 'result') and not(contains(@class, 'grid'))]");

    foreach ($nodeList as $node) {
        echo $node->nodeName . "\n";
    }
?>

Ответ 2

Ваш XPath будет //div[contains(concat(' ', @class, ' '), ' result ') and not(contains(concat(' ', @class, ' '), ' grid '))]

Ответ 3

Синтаксис XPATH будет...

//div[not(contains(@class, 'grid'))]