работа с table

Тема в разделе "PHP", создана пользователем lena berkova, 23 авг 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. lena berkova

    lena berkova

    Регистр.:
    14 янв 2009
    Сообщения:
    441
    Симпатии:
    19
    подскажите как работать с тегами таблицы.
    исходные данные - в переменной есть таблица с 2 колонками. нужно первые 2 рядка таблицы выкинуть, а значения остальных рядков загнать в массив (т.е. обе ячейки рядка)
    попытка работы с таблицей как с хмл документом не сработала, как еще можно реализовать?
     
  2. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    регулярными выражениями
     
  3. FreShBY

    FreShBY Создатель

    Регистр.:
    8 авг 2009
    Сообщения:
    12
    Симпатии:
    1
    Покажите скриншотом таблицу. Пометив зелёным что нужно загнать в массив, а что нужно убрать.

    Думаю регулярным выражением можно. Но сначало нужно увидить пример таблицы (скриншот) + сам код таблицы
     
  4. lena berkova

    lena berkova

    Регистр.:
    14 янв 2009
    Сообщения:
    441
    Симпатии:
    19
    пример такой
    внутри тегов table\tr\td могут находиться всякие стили или еще мусор. причем в первой строке еще теги th используются
    мне нужно выцепить все значения text\value
     
  5. FreShBY

    FreShBY Создатель

    Регистр.:
    8 авг 2009
    Сообщения:
    12
    Симпатии:
    1
    блин...
    я ж попросил дайте живой пример таблицы. Как составить регулярку не видя даже что вам нужно?
     
  6. lena berkova

    lena berkova

    Регистр.:
    14 янв 2009
    Сообщения:
    441
    Симпатии:
    19
    так таблица со значениями может меняться, но структура в 2 колонки постоянная. или только на постоянную таблицу можно делать ?
     
  7. FreShBY

    FreShBY Создатель

    Регистр.:
    8 авг 2009
    Сообщения:
    12
    Симпатии:
    1
    PHP:
    <?php

    @error_reporting E_ALL E_NOTICE );
    @
    ini_set 'display_errors'true );
    @
    ini_set 'html_errors'false );
    @
    ini_set 'error_reporting'E_ALL E_NOTICE );

    // Массив который получится на выходе: $table

    /* Таблица */

    $html = <<<HTML
    <table border='1'>
        <tr>
            <th>Наименование</th>
            <th>Цена</th>
        </tr>

        <tr>
            <td>Сухарики</td>
            <td>0.5 у.е.</td>
        </tr>

        <tr>
            <td>Семечки</td>
            <td>0.5 у.е.</td>
        </tr>

        <tr>
            <td>Пиво</td>
            <td>2 у.е.</td>
        </tr>
    </table> 
    HTML;

    /* Вытягиваем название столбцов */

    preg_match_all("#<th.*?>(.*?)</th>#is"$html$out);
    foreach(
    $out['1'] as $key => $value)
    {
        
    $table['titles'][] = $value;
    }

    /* Вытягиваем строчки */

    preg_match_all("#<tr>.*?<td.*?>(.*?)</td>.*?<td.*?>(.*?)</td>.*?</tr>#is"$html$out);
    for(
    $i=0$i<count($out['1']); $i++)
    {
        
    $table['rows'][$i][] = $out['1'][$i];
        
    $table['rows'][$i][] = $out['2'][$i];
    }

    /* Пример как из массива $table преобразовать назад таблицу */

    echo "<table border='1'><tr>";
    foreach(
    $table['titles'] as $key => $value)
    {
        echo 
    "<th>".$value."</th>";
    }
    echo 
    "</tr>";
    foreach(
    $table['rows'] as $row)
    {
        echo 
    "<tr>";
        foreach(
    $row as $key => $value)
        {
            echo 
    "<td>".$value."</td>";
        }
        echo 
    "</tr>";
    }
    echo 
    "</table>";

    ?>
     
  8. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    http://simplehtmldom.sourceforge.net/

    Используй этот, решит все проблемы по парсингу html данных.
     
    lena berkova нравится это.
  9. lena berkova

    lena berkova

    Регистр.:
    14 янв 2009
    Сообщения:
    441
    Симпатии:
    19
    интересное решение, но ему обязательно нужно чистый хтмл передавать? у меня в переменной сразу таблица идет
    конечно можно таблицу обернуть в хтмл, но как то некрасиво получится
     
  10. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    передавай сразу как таблицу, без обертки
     
Статус темы:
Закрыта.