2012-09-20 13 views
6

Jaka jest prawidłowa składnia do korzystania z xpath, aby uzyskać zawartość wszystkich elementów div z określoną klasą? wydaje się, że otrzymuję div, ale nie wiem jak uzyskać ich innerHTML.php xpath pobiera zawartość div z klasą

 $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

Czy próbowałeś '$ div-> nodeValue' lub' $ div-> textContent' – Musa

+0

pewno nie, nie ma szczęścia – David

Odpowiedz

6

Brak klasy HTML w klasie = "divs-display" divs - więc nic nie dostaniesz.

Masz na myśli 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, jestem głupi. To działa, ale dlaczego to "ciało" klasy nie działa? – David

+0

masz na myśli "ciało"? ("body [space]") – Robbie

+0

oh dang, spacje się liczą? To irytujące. Więc jeśli masz 4 divy z klasami 1. "body test" 2. "body body sample" 3. "example test body" 4. "body" musisz zapytać o "body", "body", "body" , I ciała"? – David

Powiązane problemy