подскажите алгоритм

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,

каким алгоритмом можно получить эти данные? в голове вертится рекурсия,
но не пойму, как прикрутить...
 

zOrg

Guest
а если попробовать не по <table и </table, а каждую нужную таблицу кинуть в <div> и делать прогон по <div и </div?

PS: а страница то ваша?
 

crocodile2u

http://vbolshov.org.ru
"а страница то ваша?" :)

Кто ж свою страницу с такими подвыподвертами разбирает?..
 

GNU

Guest
zOrg, спасибо за совет

остальным тоже спасибо
 

zOrg

Guest
Автор оригинала: crocodile2u
"а страница то ваша?" :)

Кто ж свою страницу с такими подвыподвертами разбирает?..
Если надо и не на то пойти можно.
ЗЫ: Если у вас есть решение по лучше - приму его к сведению.
 

Вилисова

Guest
В общем узнать, все ли закрылось можно так - четно/не четно.

например было вначале 0 открытых. Потом стало 1, потом стало 2 (ого, вложенная!), потом стало 1 (вложенная закрылась), потом стало 0 (О! Таблицу - в массив)...

www.ustup.ru/2/index.php

USER: foo
PASSWD: bar
 

GNU

Guest
гениально!

Originally posted by Вилисова
В общем узнать, все ли закрылось можно так - четно/не четно.

например было вначале 0 открытых. Потом стало 1, потом стало 2 (ого, вложенная!), потом стало 1 (вложенная закрылась), потом стало 0 (О! Таблицу - в массив)...

www.ustup.ru/2/index.php

USER: foo
PASSWD: bar
великолепно! Спасибо.

Итого:

1) если ON - заносим номер строки в массив и увеличиваем счетчик на 1,
2) если OFF - уменьшаем счетчик на 1
3) счетчик обнулился? Заносим номер строки в массив!

Действительно полезно, в т.ч. и при переборе диркторий!
Класс!
 
Сверху