Обрезание форматированного текста. Что делать с открытыми тегами?

  • Автор темы Автор темы [slon]
  • Дата начала Дата начала

[slon]

Guest
Обрезание форматированного текста. Что делать с открытыми тегами?

Пользователь создает текст с возможность минимального ворматирования (bold, italik, links)... При выводе текста мы смотрем общую длину текста и если текст превышает, например 256 сиволов, то мы его обрезаем, ставим многоточие и линк на полный текст.

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

Я вижу два решения:
1) Примитивное - так как пользователь ограничен тремя тегами то попросту перед выводом моего троеточия закрываю эти три тега.
2) Гемороидальное - сделать парсер, который проходился бы по тексту и складывал в массив все открвтые теги, как только мы натыкаемся на закрывающий тег мы удаляем этот тег из массива, таким образом в конце, в массиве останутся только не закрытые теги.

Возможно есть более простое (элегантное) решение?

P.S. Плюс при первом раскладе, теги считаются за символы текста, что также не очень хорошо при обрезании :)
 
Стеками это можно побороть. Копишь в стек открывающиеся теги, удаляешь закрываьющиеся теги. Те что остались закрываешь в конце. Если теги запутаны (<a><b></a></b>) то задачка несколько усложняется но это нестрашно если вдуматься хорошенько.
 
стек = массив или я что-то не догнал?
можно подробнее о том, что такое стек в данном контексте?
 
Стек это не массив. Стек это стек. Правда эго организовывать иногда гемородальнее чем делать сдвиги в массиве. Но в данном случае помоему игра стоит свеч.
 
ИМХО лучше парсером, тем более что он совсем не сложный.
 
проще, как мне кажется ограничить количество вводимых символов. Но это жаба скрипт.
после каждого нажатия кнопки считаешь длину введённых символов. как тока достиг необходимое кол-во. alert('Ну ты пасан разогнался чё-то !!!');

И НИКАКИХ парсеров, стеков и другого гемороя. И юзеру приятно. А то он ввёл одно, ты чего-то там нааткусывал (причём этим же создал сам себе геморой), и у он увидел совсем другое. Как ты думаешь, что он про тебя при этом скажет ???
 
Автор оригинала: Arthur
проще, как мне кажется ограничить количество вводимых символов. Но это жаба скрипт.
после каждого нажатия кнопки считаешь длину введённых символов. как тока достиг необходимое кол-во. alert('Ну ты пасан разогнался чё-то !!!');
Категорически с тобой несогласен. Один из многочисленных примеров:
вывод preview новостей на первой странице сайта. Нужно скажем показывать первые 255 символов, и если читателю станет интересно то он нажимает на новость и может прочитать ее всю...

Можно конечно сказать редакторам чтобы они новости длинее 255 символов даже и не думали писать... :)
Сам подумай...
 
Я эту проблему решил по другому. Я храню новость и анонс новости.
Например:
Сдан новый комплекс "КиноМАКС" В Екатеринбурге >>
А сама новость может ыть что угодно. Например:
Вчера завершился монтаж... бля-бля-бля...
и НИКАКИХ откусываний, обрезаний и вырезаний... И куцых обрезков непонятно от чего...
Но тебя это похоже не устроит.
Тогда считай каких сколько тегов открыто, каких сколько закрыто. И в конце строки закрывай все незакрытые теги.
 
Сверху