2013-06-09 8 views
11

Mam dokument, z którego chcę wyodrębnić element div z jego nietkniętą treścią. zrobić: zapytanieJak uzyskać pełny kod HTML z metody DOMXPath :: query()?

$dom = new DOMDocument(); 
$dom->loadHTML($string);//that's HTML of my document, string 

i XPath:

$xpath = new DOMXPath($dom); 
$xpath_resultset = $xpath->query("//div[@class='text']"); 
/*I'm after div class="text"*/ 

teraz zrobić item(0) metoda na to, co się z $xpath_resultset

$my_content = $xpath_resultset->item(0); 

co mam jest obiekt (nie string) $ my_content, które mogę wywołać echo lub settype() do napisu, ale w rezultacie otrzymuję w pełni usunięty znacznik?

Co zrobić, aby uzyskać wszystkie z div class = "text" tutaj?

+0

Czy wypróbowałeś metody 'saveXML' /' saveHTML'? –

+0

Błąd krytyczny: wywołanie niezdefiniowanej metody DOMElement :: saveHTML() w C: \ wamp \ www \ 3 \ test.php na linii 17. Zrobiłem ... –

+0

Następnie albo zaktualizuj PHP, albo użyj 'saveXML' zamiast tego. –

Odpowiedz

29

Wystarczy przejść węzeł metody DOMDocument::saveHTML:

$htmlString = $dom->saveHTML($xpath_resultset->item(0)); 

To daje reprezentację ciąg danym DOMNode i wszystkich jego dzieci.

+0

Prawda. Dziękuję za odpowiedź. –

+6

Ta metoda wymaga PHP 5.3.6, alternatywą jest użycie DOMDocument :: saveXML, który wymaga tylko PHP 5. – Kyle