За последние 24 часа нас посетили 18373 программиста и 1711 роботов. Сейчас ищут 1850 программистов ...

HTML DOM NODE VALUE

Тема в разделе "Прочие вопросы по PHP", создана пользователем mr.Gasparyan, 22 апр 2010.

  1. mr.Gasparyan

    mr.Gasparyan Активный пользователь

    С нами с:
    10 авг 2009
    Сообщения:
    36
    Симпатии:
    0
    Привет!

    Проблема такая, я парсю html документ, есть таблица и мне нужно из td вытащить
    содержимое, и не просто вытащить а вместе с html, то есть что бы все теги остались
    "в живых".

    Я сейчас делаю так, и у меня из td берется только текст, теги умирают...

    Код (Text):
    1.  
    2.  
    3. <?php
    4. $html = '
    5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    6.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    7. <head>
    8. <title>Parsing-and-i.blogspot.com Map</title>
    9. </head>
    10. <body>
    11. <h2>Последние темы блога</h2>
    12. <!-- на 09.08.2009 -->
    13. <table border="0">
    14.    <tbody>
    15.       <tr>
    16.          <td><a href="http://parsing-and-i.blogspot.com/2009/08/blog-post_06.html" title="Базы">http://parsing-and-i.blogspot.com/2009/08/blog-post_06.html</a></td>
    17.          <td>Базы</td>
    18.       </tr>
    19.  
    20.       <tr>
    21.          <td><a href="http://parsing-and-i.blogspot.com/2009/08/mysql-delphi-express.html" title="MySQL и Delphi. Express-метод">http://parsing-and-i.blogspot.com/2009/08/mysql-delphi-express.html</a></td>
    22.          <td>MySQL и Delphi. Express-метод</td>
    23.       </tr>
    24.  
    25.       <tr>
    26.          <td><a href="http://parsing-and-i.blogspot.com/2009/08/blog-post.html" title="Пост о том, что лучше сто раз проверить">http://parsing-and-i.blogspot.com/2009/08/blog-post.html</a></td>
    27.          <td>Пост о том, что лучше сто раз проверить</td>
    28.       </tr>
    29.  
    30.    </tbody>
    31. </table>
    32.  
    33. </body>
    34. </html>
    35. ';
    36.     /** создаем новый dom-объект **/
    37.     $dom = new domDocument;
    38.  
    39.     /** загружаем html в объект **/
    40.     $dom->loadHTML($html);
    41.     $dom->preserveWhiteSpace = false;
    42.  
    43.     /** элемент по тэгу **/
    44.     $tables = $dom->getElementsByTagName('table');
    45.  
    46.     /** получаем все строки таблицы **/
    47.     $rows = $tables->item(0)->getElementsByTagName('tr');
    48.  
    49.     /** цикл по строкам **/
    50.     foreach ($rows as $row)
    51.     {
    52.         /** все ячейки по тэгу **/
    53.         $cols = $row->getElementsByTagName('td');
    54.         /** выводим значения **/
    55.         echo $cols->item(0)->nodeValue.'<br>';
    56.         echo $cols->item(1)->nodeValue.'<br>';
    57.         echo '<hr>';
    58.     }
    59. ?>

    Хелп ми :)
     
  2. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Ну, коль авторша сайта сама не прочь тырить.

    Почему бы не регулярками?
    PHP:
    1. <?
    2. preg_match_all('/<td>(.*?)<\/td>\s+<td>(.*?)<\/td>/i', $html, $match, PREG_SET_ORDER);
    3. print_r($match);
     
  3. mr.Gasparyan

    mr.Gasparyan Активный пользователь

    С нами с:
    10 авг 2009
    Сообщения:
    36
    Симпатии:
    0