DOMDocument для извлечения части веб-страницы (любая кодировка)? - PullRequest
0 голосов
/ 10 августа 2010

Какой код хранить в строке весь контент веб-страницы между <body></body> тегами?

  • может быть любой страницей HTML / XHTML
  • может быть любой кодировкой (ISOx, UTF-8, Asian-что-то)
  • может иметь атрибуты в <body> (может обмануть парсер)

Я слышал о DOMDocument, но я большой новичок, какой-то пример кода поможет!

Ответы [ 2 ]

1 голос
/ 10 августа 2010
$d = new DOMDOcument();
libxml_use_internal_errors(true);
$d->loadHTMLFile("http://stackoverflow.com");
$b = $d->getElementsByTagName("body")->item(0);
if ($b !== null) {
    echo simplexml_import_dom($b)->asXML();
}

Это также будет включать тег <body>, и содержимое будет изменено, чтобы оно было правильно сформированным XML.

Чтобы не было тегов тела (хотя теперь у нас нетединый корень, поэтому не правильно сформированный XML):

$d = new DOMDOcument();
libxml_use_internal_errors(true);
$d->loadHTMLFile("http://stackoverflow.com");
$b = $d->getElementsByTagName("body")->item(0);
if ($b !== null) {
    for ($n = $b->firstChild; $n !== null; $n = $n->nextSibling) {
        echo simplexml_import_dom($n)->asXML();
    }
}
0 голосов
/ 11 августа 2010

Найдено Это решает проблему!

...