2013-01-14 4 views
16

제목에 요약되어 있습니다. 클래스 result을 포함하는 모든 div 태그에 대해 HTML 파일을 쿼리하려고하는데 클래스 grid이 포함되어 있지 않습니다.PHP xpath에 클래스가 포함되어 있으며 클래스가 포함되어 있지 않습니다.

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

고마워요!

+0

나는 시도하지 않은 대단히 만 // (@class, 'grid')를 포함하지 않으며 div [contains (@class, 'result')] [포함하지 않음 (@class, 'grid')] 하지만 내 구문이 바 빠졌을 때 매우 분명해졌습니다. – Rob

답변

30

것 :

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

이렇게하면 class = "* result"즉 "someResult"와도 일치합니다. 그래서 공간을 연결해야합니다. – crush

+0

코멘트 호감에 감사드립니다. 매우 도움이됩니다. 해결책에 관해서는 이것이 작동 할 것이므로 컴퓨터를 사용하고 코드를 확인한 후에는 신용을 제공 할 것이라고 확신합니다. 하나의 마지막 질문 : 상대적으로 새로운 프로그래머로서, 내 솔루션을 위해 어디로 가야합니까? 나는 SO에 관한 질문을하는 것이 게으름을 피우며 구글이 지저분한 자원을 제공한다고 생각한다. 어떤 충고? 고마워요 다시 들으세요 – Rob

+0

할리 크랩이 저축 했어요 - Cpt 캡 잠금 장치 –

7

당신의 XPath는이 그것을해야 //div[contains(concat(' ', @class, ' '), ' result ') and not(contains(concat(' ', @class, ' '), ' grid '))]

+0

이 질문에 대한 유일한 정답은 지금까지 –

+0

입니다. 매력처럼 작동합니다. – kovpack

3

는 XPath 구문이 될 것이다는 ...

//div[not(contains(@class, 'grid'))] 
관련 문제