2011-06-27 13 views
5

Mam div w php (ciąg) i chcę uzyskać zawartość.Jak mogę uzyskać zawartość div w php

na przykład:

<div id="product_list" style="width:100%; float:none;"> 
     <div> 
     bla bla bla 
     </div> 
     bla bla   
</div> 

i chcę

<div> 
    bla bla bla 
</div> 
    bla bla 

styl się zmienia, znam tylko identyfikator div.

AKTUALIZACJA

to jest mój kod, tak samo jak źródła turbod a wyniki są takie same też.

więc jest to oryginalny html

$doc = new DOMDocument(); 
$doc->loadHTML($buffer); 
$id = $doc->getElementById('product_list') 

A po tym kodzie pojawia się następujący: link

+0

Czy mam rację, że ostatni wiersz w swoim „zaktualizowana” kodu deklarując '$ id' powinny być zgodne ze średnikiem dla Składnia PHP? – HelpingHand

Odpowiedz

16

użyć klasy php domDocument. http://www.php.net/manual/en/class.domdocument.php

$dom = new DOMDocument(); 

$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 
$divContent = $xpath->query('//div[id="product_list"]'); 
+0

Czy do zainstalowania wklejonego tutaj kodu są potrzebne jakieś biblioteki zewnętrzne? Pytam o to, ponieważ kod nie działa bezpośrednio na moim serwerze. – HelpingHand

+0

Nie, ale wymaga rozszerzenia PHP libxml. http://www.php.net/manual/en/dom.requirements.php Sprawdź swoje phpinfo(). Czy masz jakiś komunikat o błędzie? – turbod

1

Aby zapisać fragment XML/HTML, trzeba zapisać każdy węzeł dziecko:

$dom = new DOMDocument(); 
$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 
$result = ''; 
foreach($xpath->evaluate('//div[@id="product_list"]/node()') as $childNode) { 
    $result .= $dom->saveHtml($childNode); 
} 
var_dump($result); 

wyjściowa:

string(74) " 
     <div> 
     bla bla bla 
     </div> 
     bla bla   
" 

Jeśli potrzebujesz tylko zawartość tekstową, można pobierz bezpośrednio:

$dom = new DOMDocument(); 
$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 
var_dump(
    $xpath->evaluate('string(//div[@id="product_list"])') 
); 

wyjściowa:

string(63) " 

     bla bla bla 

     bla bla   
" 
-1

Czy to nie wystarczy, aby zrobić ...

$id->nodeValue 
Powiązane problemy