Я пытаюсь загрузить простую HTML-строку (которая независимо от HTML-tidy) не позволит доступ к DOMDocument.PHP DOMDocument всегда дает пустой объект
Вот конкретизации
$doc = new DOMDocument(/*'1.0', 'utf-8'*/);
$doc->recover = true;
$doc->strictErrorChecking = false;
$doc->formatOutput = true;
$doc->load($content);
$node_array = $doc->getElementsByTagName("body");
print_r($node_array)
... или $node_array->items(0);
я получаю:
DOMNodeList Object
(
)
DOMDocument возвращает строку просто отлично с функцией сохранения Это не ресурс , Могут ли они отсутствовать зависимости, дополнительные конфигурации PHP ...?
Update: Объектами DOMDocument просто не имеют каких-либо функции преобразования ToString реализованы:
print_r((string)$node_array);
Объект класса список DOMNodeList не может быть преобразован в строку в ....
Код HTML: Код статьи: http://pastebin.com/11V92Dup (преднамеренно искаженный - это должно было продемонстрировать в коде, который 'tidy' правильно закрывает теги)
Я хотел бы просто ходить узлы и вывода их содержание:
$node_array = $doc->getElementsByTagName("html");//parent_node();
$x = $doc->documentElement;
foreach ($x->childNodes AS $item)
{
print $item->nodeName . " = " . $item->nodeValue . "<br />";
}
UPDATE 2: я получаю этот результат! что не имеет смысла. (Где же все пробелы взялось?)
body =
COMPOUND: C05441
Где ваша строка HTML? – ajreal
Извините, но какой вопрос? Вы хотите получить все тело как строку? если это правда, и вы хотите сделать это с помощью DOMDocument, вы должны клонировать первый узел и вставлять его в новый DOMDocument. Например: $ node_arr = $ doc-> getElemenetsByTagName ('body'); if ($ node_arr-> length) {$ new_dom = новый DOMDocument; $ New_dom-> AppendChild ($ node_arr-элементы (0) -> cloneNode (истина))}. Но IU советуют гораздо лучше использовать sunstring/strpos или regexp. – ZigZag
Белые пространства вызывают теги HTML под тегом body. Что вы ищете? – ajreal