OFFT: Получить превью текста (отрезать первый кусок - типа анонс)
kechinoff 20.03.2007 16:48
Заранее извиняюсь, что не про парсер. Сижу сейчас, голова не соображает. Просто может кто-то делал и сможет подсказать.
Имеем:
1. Текст в HTML. Большой такой текст. Например, статью. В тексте есть теги. Всякие полезные теги, типа P, A, IMG, TABLE, TR, TD, BR. Условие одно - HTML валиден, т.е. каждому открытому тегу соответствует свой закрытый. Кроме BR. Ну, и, нет шапки. Т.е. нет <HTML>, <HEAD>, <BODY>, т.е. только то, что обычно находится между <BODY> и </BODY>
2. Имеем язык программирования, в котором:
- нет ассоциативных массивов
- нет регулярных выражений
- да и вообще функционал - как у JavaScript, может чуть по-больше. Но ориентируемся на JavaScript.
Что нужно?
Нужно взять этот текст, вырезать от него начало. Полученный кусок должен не превышать 10% от веса исходного текста, но при этом быть не больше 20КБ. Т.е. если 10% оказалось больше 20КБ, то отрезок равен 20КБ.
Далее. Нужно закрыть все обрезанные теги. Т.е. если конец пришелся на середину текста внутри <P></P>, то закончить слово, которое обрезано, и поставить там </P>.
Аналогично с H1, H2, H3.
Аналогично <IMG> - если обгрыз текста пришелся на тег IMG, то нужно:
1. Закончить тег IMG
2. Посмотреть размер текста. Если размер текста стал больше 50% от размера первоначального текста, то IMG нафиг удалить.
И самое сложное - то же самое сделать с таблицами. Т.е. если обрыв пришелся на таблицу, то нужно удалить все последующие строки таблицы, а саму таблицу закрыть. При этом могут быть еще и вложенные таблицы.
Одним словом - УЖС.
Если кто-то уже когда-то делал подобное - направьте на путь истинный.
- OFFT: Получить превью текста (отрезать первый кусок - типа анонс), kechinoff 20.03.2007 16:48