[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сохранение DOM в файл
McLotos
Добрый вечер!
В общем решил поковырять DOM, не могу понять как сохранить результат. конечно можно использовать что-то типа file_put_content или даже fwrite, но нашёл метод SaveHTMLFile, который почему-то работает не так как ожидалось.
$dom = new DOMDocument;
libxml_use_internal_errors(true);
libxml_clear_errors();
$dom -> loadHTMLFile($this -> tmp_dir . $this -> CurrentPage() . $this -> ext);
$html = $dom -> getElementsByTagName('html');

Как $html записать в файл?
Пробовал
 $html -> formatOutput = true;
$html -> saveHTMLFile('test1.html');
Ругается что неверный метод
Пробовал вот так
  $dom -> formatOutput = true;
$dom -> saveHTMLFile('test1.html');
Ни на что не ругается но и делает не то, создаёт файл с одной единственной строкой
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

Как записать всё содержимое объекта $html в файл?

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
sergeiss
Цитата (McLotos @ 23.07.2014 - 17:25)
$dom -> saveHTMLFile('test1.html');
Ни на что не ругается но и делает не то, создаёт файл с одной единственной строкой

Может и дурной вопрос... А там точно есть что-то в этой переменной, что-то было загружено?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
McLotos
$this -> tmp_dir . $this -> CurrentPage() . $this -> ext
адрес реально существующего файла
$html = $dom -> getElementsByTagName('html');
100% не пустая, потому как дальше я произвожу кучу манипуляций с её дочерними элементами
практически все возможные ситуации когда элемент пустой или у элемента нет нужного параметра, всё это проверяется в процессе обработки и если произошла ошибка то скрипт останавливается и выводит сообщение

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
$html->item(0)->childNodes->length;//равно двум - head и body.
$html->item(0)->childNodes->item(0)->childNodes->length;// равно 9. тут тоже всё правильно - 1 title, 5 meta, 1 script и 2 link
$html->item(0)->childNodes->item(1)->childNodes->length;// равно 10. Если посчитать все div внутри body то получается как раз 10

Я даже вывел все параметры всех элементов, ну например
$html->item(0)->childNodes->item(0)->childNodes->item(2)->nodeName;// выводит слово meta
$html->item(0)->childNodes->item(0)->childNodes->item(2)->getAttribute('name');// выводит слово keywords
$html->item(0)->childNodes->item(0)->childNodes->item(2)->getAttribute('content');// выводит ключевые слова страницы

Из-за чего может не работать
$dom -> saveHTMLFile('test.htm');


_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.