web-dev-qa-db-fra.com

PHP xpath contient la classe et ne contient pas la classe

Le titre le résume. J'essaie d'interroger un fichier HTML pour toutes les balises div qui contiennent la classe result et ne contiennent pas la classe grid.

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

Merci!

21
Rob

Cela devrait le faire:

<?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";
}
40
Sean Bright

Votre XPath serait //div[contains(concat(' ', @class, ' '), ' result ') and not(contains(concat(' ', @class, ' '), ' grid '))]

11
crush

La syntaxe XPATH serait ...

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