За последние 24 часа нас посетили 16553 программиста и 1679 роботов. Сейчас ищут 857 программистов ...

DOM

Тема в разделе "Прочие вопросы по PHP", создана пользователем mro5, 19 янв 2009.

  1. mro5

    mro5 Активный пользователь

    С нами с:
    1 авг 2008
    Сообщения:
    2
    Симпатии:
    0
    Всем привет!!!! Столкнулся с затачей распарсить страничку........в ней нужно выбрать одну таблицу по id и с ней уже работать ...... использую DOM


    $doc = new DOMDocument();
    $doc->loadHTML($page);

    $page - содержит именно html код страницы

    $doc->getElementById('id_table');

    как мне теперь преобразовать объект обратно в строку ???????


    Если кто знает ....... помогите!!! :!:
     
  2. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1. <?php
    2. $table = $doc->getElementById('id_table');
    3. if ($table instanceof DOMElement)
    4.    echo $doc->saveXML($table);
    5. ?>
     
  3. NT Man

    NT Man Активный пользователь

    С нами с:
    19 июн 2008
    Сообщения:
    103
    Симпатии:
    1
    Адрес:
    черт его знает
    При работе выше описанного кода есть проблема, если в таблице были пустые ячейки <td></td>, то в выходной строке такая конструкция превратится в <td/>, и если это передать в браузер, то начнётся кривизна.
     
  4. sword dancer

    sword dancer Активный пользователь

    С нами с:
    17 фев 2008
    Сообщения:
    295
    Симпатии:
    0
  5. NT Man

    NT Man Активный пользователь

    С нами с:
    19 июн 2008
    Сообщения:
    103
    Симпатии:
    1
    Адрес:
    черт его знает
    Писал в соседней ветке, что тогда нельзя сохранить отдельный фрагмент.
    На другом форуме подсказали использовать опцию LIBXML_NOEMPTYTAG.
    В результате код приобретает вид:
    PHP:
    1.  
    2. <?php
    3.  $table = $doc->getElementById('id_table');
    4.  if ($table instanceof DOMElement)
    5.    echo $doc->saveXML($table, LIBXML_NOEMPTYTAG);
    6.  ?>
    7.  
     
  6. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    LIBXML_NOEMPTYTAG разворачивает все теги. <br /> превратится в <br></br>.
     
  7. NT Man

    NT Man Активный пользователь

    С нами с:
    19 июн 2008
    Сообщения:
    103
    Симпатии:
    1
    Адрес:
    черт его знает
    Ну вот нет значит счастья :(