Привет!
У меня есть такая задача:
1) пользователь загружает на сервер хтмл файл. (это понятно как делать)
2) пхп скрипт читает загруженный файл, изменяет его и выводит измененную версию.
Загружаемый файл кроме "шапки" пары вступлений и тд содержит в себе табличку.
Необходимо некоторые столбцы таблицы удалить вообще, содержимое определенных ячеек преобразить и тп. а пользователю показать уже мое оформление и измененную под мой вкус таблицу..
к примеру исходный вид одной строки исходной таблички такой:
(в ячейках таблицы какие-то данные, в скобках я просто обозвала их чтобы показаь что с ними потом делать)
а моя табличка должна содержать чтото вроде
CODE ( text):
скопировать код в буфер обмена
<tr> <td>{from}.{хитрые штуки}</td> <td>{to}</td> <td>{nyo}*28-42.{desu}</td> <td>картинка</td> <td>вообще новые данные</td> <td>и чтото вроде {nyo?!}{to}{from}</td> </tr>
как это лучше делать если:
1) таблица может содержать и 40 и 40000 строк - предугадать нельзя ) Такчто сразу грузить файл в массив или читать целиком нельзя.
2) файл генерируется абсолютно сторонней программой, тоесть при создании в нем нельзя поставить никаких "меточек" для упрощения разбора..
3) Страница всегда разная по содержанию, но одинакова по структуре.
4) переносы строки в файле (не <БР> а в коде) могут быть вразброс.
5) до таблицы есть некоторые нужные мне данные! их тоже надо выдрать
трудность собственно в том - как определить где в файле что написано и убедиться что у меня в руках цельная строка таблицы и ее можно править )
Как это дело парсить? как я представляю это :
нахожу в теле <body>, дальше ищу элементы обрамленными известными мне тегами и "на веру" принимаю их последовательно как нужные мне элементы..
Можно составить большое регексп выражение и читать файл по символу "примеривая" к шаблону прочитанное - а как совпадет - разбирать.. далее искать следующий кусок и тп... но схема подобной штуки для меня представляется уж больно сложновато...
Какие есть другие подходы? Или может какая-нить готовая технология существует? )(Отредактировано автором: 04 Июня, 2008 - 17:16:27)
|