Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сохранение DOM в файл

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Uchenik
Отправлено: 24 Июля, 2014 - 12:28:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Добрый день!
В общем решил поковырять DOM, не могу понять как сохранить результат.
Имеется html файл, который я сначала считываю, потом меняю в нём некоторые параметры и нужно сохранить изменения в новый файл
PHP:
скопировать код в буфер обмена
  1. $dom = new DOMDocument;
  2. $dom -> loadHTMLFile($this -> tmp_dir . $this -> CurrentPage() . $this -> ext);
  3. $html = $dom -> getElementsByTagName('html');

Пробовал записывать так
PHP:
скопировать код в буфер обмена
  1. $html -> formatOutput = true;
  2. $html -> saveHTMLFile('test1.html');

и так
PHP:
скопировать код в буфер обмена
  1. $dom -> formatOutput = true;
  2. $dom -> saveHTMLFile('test1.html');

В первом случае ругается что неверный метод
Во втором ни на что не ругается и создаёт файл вот с такой записью
CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

PHP:
скопировать код в буфер обмена
  1. $html = $dom -> getElementsByTagName('html');

100% не пустая, потому как дальше я произвожу кучу манипуляций с её дочерними элементами
практически все возможные ситуации когда элемент пустой или у элемента нет нужного параметра, всё это проверяется в процессе обработки и если произошла ошибка то скрипт останавливается и выводит сообщение
PHP:
скопировать код в буфер обмена
  1. $html->item(0)->childNodes->length;//равно двум - head и body.
  2. $html->item(0)->childNodes->item(0)->childNodes->length;// равно 9. тут тоже всё правильно -  1 title, 5 meta, 1 script и 2 link
  3. $html->item(0)->childNodes->item(1)->childNodes->length;// равно 10. Если посчитать все div внутри body то получается как раз 10
  4. $html->item(0)->childNodes->item(0)->childNodes->item(2)->nodeName;// выводит слово meta
  5. $html->item(0)->childNodes->item(0)->childNodes->item(2)->getAttribute('name');// выводит слово keywords
  6. $html->item(0)->childNodes->item(0)->childNodes->item(2)->getAttribute('content');// выводит ключевые слова страницы

Почему может не работать
PHP:
скопировать код в буфер обмена
  1. $dom -> saveHTMLFile('test.htm');
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB