2012-09-20 11 views
6

Was ist die richtige Syntax, um Xpath zu verwenden, um den Inhalt aller divs mit einer bestimmten Klasse zu erhalten? Ich scheine die Divs zu bekommen, aber ich weiß nicht, wie ich ihr InnerHTML bekommen soll.php xpath erhalten Inhalt von div mit Klasse

 $url = "http://www.vanityfair.com/politics/2012/10/michael-lewis-profile-barack-obama"; 

    $ctx  = stream_context_create(array('http'=> array('timeout' => 10))); 

    libxml_use_internal_errors(TRUE); 
    $num = 0; 

    if($html = @file_get_contents($url,false,$ctx)){ 

     $doc = DOMDocument::loadHTML($html); 
     $xpath = new DOMXPath($doc); 

     foreach($xpath->query('//div[@class="page-display"]') as $div){ 
      $num++; 
      echo "$num. "; 

      //???? 

      echo "<br/>"; 
     } 

     echo "<br/>FINISHED"; 

    }else{ 
     echo "FAIL"; 
    } 
+0

Haben Sie versucht, '$ div-> nodeValue' oder' $ div-> textContent' – Musa

+0

sicher tat, kein Glück – David

Antwort

6

Es gibt keine HTML in der Klasse = „page-Anzeige“ divs - damit Sie nicht überhaupt in Gang bringen nichts.

Meinst du die get class = "parbase cn_text"?

foreach($xpath->query('//div[@class="parbase cn_text"]') as $div){ 
     $num++; 
     echo "$num. "; 

     //???? 
     echo $div->textContent; 

     echo "<br/>"; 
    } 
+0

wow, ich bin dumm. Das funktioniert, aber warum funktioniert der Klassenkörper nicht? – David

+0

meinst du "Körper"? ("Körper [Raum]") – Robbie

+0

oh dang, Leerzeichen zählen? das nervt. Also, wenn du 4 divs mit Klassen 1 hättest. "Body test" 2. "test body example" 3. "beispiel test body" 4. "body" müsstest du auf "body", "body", "body" abfragen , und Körper"? – David