Парсинг html таблицы на php

529
17 октября 2017, 03:56

Здравствуйте, имеется html таблица с расписанием

<table cellpadding="0" cellspacing="0" class="outer"> 
  <tbody> 
    <tr> 
      <th class="zagol1">День</th> 
      <th class="zagol2">Пара</th> 
      <th class="zagol3">1-ша підгрупа</th> 
      <th class="zagol4">2-га підгрупа</th> 
    </tr> 
    <tr style="border-top:2px solid #333333;"> 
      <td align="center" valign="middle" rowspan="4" class="leftcell">Пн</td> 
    </tr> 
    <tr style="border-top:2px solid #333333;"> 
      <td align="center" valign="middle" class="leftcell">3</td> 
      <td colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr> 
              <td class="color"> 
                <div class="vidst "><b>Теорія автоматичного керування, частина 1</b> 
                  <br> 
                  <i>доцент Крих А.Б.</i> 
                  <br>X н.к.&nbsp;51, лекція 
                </div> 
              </td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
    <tr> 
      <td align="center" valign="middle" class="leftcell">4</td> 
      <td colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr> 
              <td style="border-bottom: dotted 1px #333333;" width="490px" height="55px"></td> 
            </tr> 
            <tr class="color"> 
              <td width="490px"> 
                <div class="vidst"><b>Основи охорони праці та безпека життєдіяльності</b> 
                  <br> 
                  <i>доцент Кіт Ю.В.</i> 
                  <br>III н.к.&nbsp;231, лекція 
                </div> 
              </td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
    <tr> 
      <td align="center" valign="middle" class="leftcell">5</td> 
      <td colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr class="color"> 
              <td style="border-right: dotted 1px #333333;" width="245px" height="55px"></td> 
              <td width="245px"> 
                <div class="vidst"><b>Теорія автоматичного керування, частина 1</b> 
                  <br> 
                  <i>асистент Масняк О.Я.</i> 
                  <br>X н.к.&nbsp;86, лаб. 
                </div> 
              </td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
    <tr style="border-top:2px solid #333333;"> 
      <td align="center" valign="middle" rowspan="4" class="leftcell">Вт</td> 
    </tr> 
    <tr style="border-top:2px solid #333333;"> 
      <td align="center" valign="middle" class="leftcell">3</td> 
      <td colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr class="color"> 
              <td style="border-right: dotted 1px #333333;" width="245px"> 
                <div class="vidst"><b>Метрологія, технологічні вимірювання та прилади, частина 2</b> 
                  <br> 
                  <i>асистент Масняк О.Я.</i> 
                  <br>X н.к.&nbsp;71, лаб. 
                </div> 
              </td> 
              <td width="245px" height="55px"></td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
    <tr> 
      <td align="center" valign="middle" class="leftcell">4</td> 
      <td colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr> 
              <td class="color"> 
                <div class="vidst "><b>Теорія автоматичного керування, частина 1</b> 
                  <br> 
                  <i>доцент Крих А.Б.</i> 
                  <br>X н.к.&nbsp;51, лекція 
                </div> 
              </td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
    <tr> 
      <td align="center" valign="middle" class="leftcell">5</td> 
      <td colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr class="color"> 
              <td style="border-right: dotted 1px #333333;" width="245px"> 
                <div class="vidst"><b>Теорія автоматичного керування, частина 1</b> 
                  <br> 
                  <i>асистент Масняк О.Я.</i> 
                  <br>X н.к.&nbsp;86, лаб. 
                </div> 
              </td> 
              <td width="245px" height="55px"></td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
    <tr style="border-top:2px solid #333333;"> 
      <td align="center" valign="middle" rowspan="3" class="leftcell">Ср</td> 
      <td style="border-top:2px solid #333333;" align="center" valign="middle" class="leftcell">1</td> 
      <td style="border-top:2px solid #333333;" colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr> 
              <td class="color"> 
                <div class="vidst "><b>Метрологія, технологічні вимірювання та прилади, частина 2</b> 
                  <br> 
                  <i>доцент Кріль Б.А.</i> 
                  <br>X н.к.&nbsp;51, лекція 
                </div> 
              </td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
    <tr> 
      <td align="center" valign="middle" class="leftcell">2</td> 
      <td colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr> 
              <td style="border-bottom: dotted 1px #333333;" width="490px"> 
                <div class="vidst"><b>Основи охорони праці та безпека життєдіяльності</b> 
                  <br> 
                  <i>доцент Кіт Ю.В.</i> 
                  <br>III н.к.&nbsp;302, прак. 
                </div> 
              </td> 
            </tr> 
            <tr class="color"> 
              <td width="490px"> 
                <div class="vidst"><b>Теорія автоматичного керування, частина 1</b> 
                  <br> 
                  <i>доцент Матіко Г.Ф.</i> 
                  <br>X н.к.&nbsp;71, прак. 
                </div> 
              </td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
    <tr> 
      <td align="center" valign="middle" class="leftcell">3</td> 
      <td colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr> 
              <td class="color"> 
                <div class="vidst "><b>Фізичне виховання, частина 5</b> 
                  <br> 
                  <i>Вакансія</i> 
                  <br>каф., прак. 
                </div> 
              </td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
    <tr style="border-top:2px solid #333333;"> 
      <td align="center" valign="middle" rowspan="2" class="leftcell">Чт</td> 
      <td style="border-top:2px solid #333333;" align="center" valign="middle" class="leftcell">1</td> 
      <td style="border-top:2px solid #333333;" colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr> 
              <td class="color"> 
                <div class="vidst "><b>Метрологія, технологічні вимірювання та прилади, частина 2</b> 
                  <br> 
                  <i>доцент Кріль Б.А.</i> 
                  <br>X н.к.&nbsp;51, лекція 
                </div> 
              </td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
    <tr> 
      <td align="center" valign="middle" class="leftcell">2</td> 
      <td colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr class="color"> 
              <td style="border-right: dotted 1px #333333;" width="245px"> 
                <div class="vidst"><b>Електроніка та мікропроцесорна техніка, частина 2</b> 
                  <br> 
                  <i>доцент Лесовий Л.В.</i> 
                  <br>X н.к.&nbsp;86, лаб. 
                </div> 
              </td> 
              <td width="245px"> 
                <div class="vidst"><b>Метрологія, технологічні вимірювання та прилади, частина 2</b> 
                  <br> 
                  <i>асистент Масняк О.Я.</i> 
                  <br>X н.к.&nbsp;71, лаб. 
                </div> 
              </td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
    <tr style="border-top:2px solid #333333;"> 
      <td align="center" valign="middle" rowspan="4" class="leftcell">Пт</td> 
      <td style="border-top:2px solid #333333;" align="center" valign="middle" class="leftcell">1</td> 
      <td style="border-top:2px solid #333333;" colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr> 
              <td class="color"> 
                <div class="vidst "><b>Теорія інформації</b> 
                  <br> 
                  <i>доцент Фединець В.О.</i> 
                  <br>X н.к.&nbsp;71, прак. 
                </div> 
              </td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
    <tr> 
      <td align="center" valign="middle" class="leftcell">2</td> 
      <td colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr> 
              <td class="color"> 
                <div class="vidst "><b>Теорія інформації</b> 
                  <br> 
                  <i>доцент Фединець В.О.</i> 
                  <br>II н.к.&nbsp;307, лекція 
                </div> 
              </td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
    <tr> 
      <td align="center" valign="middle" class="leftcell">3</td> 
      <td colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr> 
              <td style="border-bottom: dotted 1px #333333;" width="490px"> 
                <div class="vidst"><b>Електроніка та мікропроцесорна техніка, частина 2</b> 
                  <br> 
                  <i>доцент Лесовий Л.В.</i> 
                  <br>XIV н.к.&nbsp;72, лекція 
                </div> 
              </td> 
            </tr> 
            <tr class="color"> 
              <td width="490px"> 
                <div class="vidst"><b>Електроніка та мікропроцесорна техніка, частина 2</b> 
                  <br> 
                  <i>доцент Лесовий Л.В.</i> 
                  <br>X н.к.&nbsp;51, лекція 
                </div> 
              </td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
    <tr> 
      <td align="center" valign="middle" class="leftcell">4</td> 
      <td colspan="2" class="maincell"> 
        <table cellpadding="0" cellspacing="0" width="490px"> 
          <tbody> 
            <tr class="color"> 
              <td style="border-right: dotted 1px #333333;" width="245px" height="55px"></td> 
              <td width="245px"> 
                <div class="vidst"><b>Електроніка та мікропроцесорна техніка, частина 2</b> 
                  <br> 
                  <i>доцент Лесовий Л.В.</i> 
                  <br>X н.к.&nbsp;86, лаб. 
                </div> 
              </td> 
            </tr> 
          </tbody> 
        </table> 
      </td> 
    </tr> 
  </tbody> 
</table>

С помощью html dom parser пытаюсь распарсить её, чтоб можно было различать день, номер пары, подгруппу (см скриншот)

Вот что есть на данный момент

$html = file_get_html($table);
foreach($html->find('tr') as $tr)
{
    echo $tr->innertext . '<br>';
}

Вот несколько особенностей:

  • Пара не меняется на следующую неделю <div class="vidst ">

  • Пара меняется на следующую неделю <div class="vidst">

  • Пара отсутствует <td style="border-bottom: dotted 1px #333333;" width="490px" height="55px"></td>

Как правильно отфильтровать всё это?

READ ALSO
Создание php файла в теме wordpress через админку

Создание php файла в теме wordpress через админку

Подскажите, как создать php файл в теме wordpress через админку

326
Ошибка при работе с Doctrine

Ошибка при работе с Doctrine

Доброе время суток, может кто ни будь по русски объяснить из за чего может возникать ошибка в Doctrine $provider->setUser($user); // $user = "azazaza" $provider->save();

221
Не проходит запрос к БД при авторизации PHP + MSSQL

Не проходит запрос к БД при авторизации PHP + MSSQL

Столкнулся со следующей проблемой: не проходит запрос БДДанные получаю с форм посредством AJAX (запаковываю в JSON и отправляю на сервер)

236
Не корректно работает mysql запрос

Не корректно работает mysql запрос

здравствуйте, есть элементарный запрос, с помощью которого можно ограничить количество публикаций раз в 10 минут:

275