Кажется, что DOMDocument
не будет хорошо играть с фрагментами HTML. Вы можете либо рассмотреть DOMDocumentFragment
(как предлагает dnagirl ), либо рассмотреть вопрос о расширении DOMDocument
.
После небольшого исследования я собрал простое расширение, которое достигнет того, что вы просите:
class MyDOMDocument extends DOMDocument {
function getElementById($id) {
//thanks to: http://www.php.net/manual/en/domdocument.getelementbyid.php#96500
$xpath = new DOMXPath($this);
return $xpath->query("//*[@id='$id']")->item(0);
}
function output() {
// thanks to: http://www.php.net/manual/en/domdocument.savehtml.php#85165
$output = preg_replace('/^<!DOCTYPE.+?>/', '',
str_replace( array('<html>', '</html>', '<body>', '</body>'),
array('', '', '', ''), $this->saveHTML()));
return trim($output);
}
}
Использование
$dom = new MyDOMDocument();
$dom->loadHTML($code);
var_dump($dom->getElementById("galeria_list"));
echo $dom->output();