Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Для профи > как представить html в виде xml/dom дерева


Автор: Alone 3.6.2005, 10:40
Стоит задача сливать страницу, и выделять оттуда некую информацию.
страница динамична, греповать не получится... Вот вопрос:
А можно ли как то средствами рнр4 залиь эту старницу в xml или dom объект,
чтоб потом можно было обращаться к его элементам типа $obj->table->td... ?

Автор: Master 6.6.2005, 12:32
греповать можно все... все зависит от знания грепа smile страницу с объяснением причины почему её нельзя греповать в студию.

Автор: OPG 6.6.2005, 12:40


Код

$fp=fopen("page.html","r");


$temp=fread($fp,filesize("page.html"));
  

$page= domxml_open_mem($temp);
              

$root = $page->document_element();
    

$elements = $page->get_elements_by_tagname("body");

$element = $elements[0];


$content=$element->get_content();


Теперь в переменной $content валяется содержимое тега body, и так можно получить что хочешь.
Добавлено @ 12:48
Короче сливаешь страницу в переменную, которую затем сваливаешь функции которая формирует деревянное дерево в памяти.

Есть камни подводные.

Во-первых, данную страницу сначала надо обработать по поводу вырезания пробелов, знаков табуляции и всякой лабудени, которыми нашпигованы строки между тегами. XML документ воспринимает все знаки. Сволочь эдакая:)
Потом. В HTML документе встречаются мета теги, которые не имеют обычно закрывающего тега и еще навалом таких, некоторые пишут <p> , без закрывающего тега. А что говорить об <br> и <hr>? Тогда надо писать так <br />, пробел не забывай между br и /. В общем иначе будет ошибка.
Но эти проблемы легко решить, а пользы и удобства много.
Наслаждайся:)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)