Search code examples
phpxpathdomxpathxpathquery

PHP xpath contains class and does not contain class


The title sums it up. I'm trying to query an HTML file for all div tags that contain the class result and does not contain the class grid.

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

Thanks!


Solution

  • This should do it:

    <?php
    $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";
    }