2011-06-20 25 views
6

Przejrzałem inne pytania Stackoverflow na ten temat i żadne z podanych tam rozwiązań nie działa.Zdobycie zawartości div z PHP DOM

Mam stronę html (zeskrobaną z file_get_contents()) iw tym html jest div z id "main" - potrzebuję uzyskać zawartość tego div z DOMDocument PHP lub coś podobnego. W tej sytuacji nie mogę użyć parsera SimpleHTMLDom, który nieco komplikuje sytuację.

+0

Kiedy mówisz * Potrzebuję uzyskać zawartość tego div * Czy oznacza HTML? – alex

+0

[DOMElement getElementById (string $ elementId)] (http://php.net/manual/en/class.domdocument.php) – Ibu

Odpowiedz

5

DOMDocument + XPath odmiana:

$xml = new DOMDocument(); 
$xml->loadHtml($temp); 
$xpath = new DOMXPath($xml); 

$html = ''; 
foreach ($xpath->query('//div[@id="main"]/*') as $node) 
{ 
    $html .= $xml->saveXML($node); 
} 

Jeśli szukasz innerHTML() (PHP DOMDocument Reference Question) - zamiast innerXML() jak w tej odpowiedzi - wariant XPath związanych podano in this answer.

Tutaj przyjęcie ze zmianami podkreślono:

$html = ''; 
foreach ($xpath->query('//div[@id="main"]/node()') as $node) 
              ###### 
{ 
    $html .= $xml->saveHTML($node); 
         #### 
} 
+0

Działa wspaniale, wielkie dzięki. –

3

Korzystanie DOMDocument ...

$dom = new DOMDocument; 

$dom->loadHTML($html); 

$main = $dom->getElementById('main'); 

Aby uzyskać zserializowaną HTML ...

html = ''; 
foreach($main->childNodes as $node) { 
    $html .= $dom->saveXML($node, LIBXML_NOEMPTYTAG); 
} 

Zastosowanie saveHTML() jeśli twoja wersja PHP obsługuje.

Powiązane problemy