GNU
Guest
подскажите алгоритм
есть html страница, состоящая из последовательно идущих друг за другом таблиц,
таблицы идут сверху вниз, одинаковы по ширине, остальные параметры разные (цвет, бордеры и т.п.)
задача - разделить текст на блоки - 1 блок, 1 такая таблица
проблема - некоторые из таблиц также содержат таблицы, вложенные
я считываю файл в массив,
прогоняю array_walk'ом массив через функцию по принципу -
если строка содержит <table - занести в новый массив ключем - номер строки, значением - 'ON'
если строка содержит </table - занести в новый массив ключем - номер строки, значением - 'OFF'
естественно, из-за вложенных таблиц получается что-то вида
5 = > ON
11 = > ON
18 = > ON
29 = > OFF
34 = > OFF
36 = > ON
59 = > OFF
64 = > OFF
(возможен, конечно, случай, когда в одной строке окажется и начало и конец таблицы,
но считаем, что этого нет)
как видно, таблица та что надо, начинается в строке 5 и заканчивается в строке 64,
каким алгоритмом можно получить эти данные? в голове вертится рекурсия,
но не пойму, как прикрутить...
есть html страница, состоящая из последовательно идущих друг за другом таблиц,
таблицы идут сверху вниз, одинаковы по ширине, остальные параметры разные (цвет, бордеры и т.п.)
задача - разделить текст на блоки - 1 блок, 1 такая таблица
проблема - некоторые из таблиц также содержат таблицы, вложенные
я считываю файл в массив,
прогоняю array_walk'ом массив через функцию по принципу -
если строка содержит <table - занести в новый массив ключем - номер строки, значением - 'ON'
если строка содержит </table - занести в новый массив ключем - номер строки, значением - 'OFF'
естественно, из-за вложенных таблиц получается что-то вида
5 = > ON
11 = > ON
18 = > ON
29 = > OFF
34 = > OFF
36 = > ON
59 = > OFF
64 = > OFF
(возможен, конечно, случай, когда в одной строке окажется и начало и конец таблицы,
но считаем, что этого нет)
как видно, таблица та что надо, начинается в строке 5 и заканчивается в строке 64,
каким алгоритмом можно получить эти данные? в голове вертится рекурсия,
но не пойму, как прикрутить...