Обработка BBcode

doran7

Новичок
Есть такой подход, который сам намереваюсь реализовать.

1. Создание постов в bb, предпросмотр через простой парсер bb-html либо на клиенте (предпочтительнее) либо на сервере.
2. После окончательного создания поста и отсылки его на сервер - фильтрация и парсинг рабочим парсером из bb в html.
3. Сохранение поста в БД в html разметке текста (это важно, что не в bb, а в html).
4. При выводе поста в браузер (по запросу посетителя сайта) достаем пост из БД с готовой html-разметкой текста и просто выводим на сайт. Никакого парсинга при выводе не надо.

Узкое место. При редактировании поста надо делать обратный парсер (парсинг) поста из html в bb, чтобы отобразить его в bb-разметке в поле формы редактирования. Но это приемлемо, имхо. Поскольку случаи редактирования постов гораздо более редкие, чем случаи вывода (отображения постов). И редактирование можно позволить только ограниченной группе привелигированных пользователей.

Плюсы подхода, весьма весомые. Не надо делать парсинг из bb в html при отображении постов в браузере, а такие случаи - самые частые, и именно они дают основную нагрузку на сервер.
 

doran7

Новичок
Я все равно в упор не понимаю, почему "обычному пользователю" [ b ] - легко, а <b> - непостижимый рокетсайенс..
Опять же, дело здесь не в удобстве для юзера, в основном. Дело в том, что если постить с разметкой текста сразу в html, на сервере потом придется делать довольно сложную и тяжелую фильтрацию html (защита от XSS и пр.). Издержки на такую фильтрацию гораздо выше, чем простая фильтрация bb, через strip_tags, и затем парсинг bb в html. Обратного никто аргументированно еще не доказал.
 

fixxxer

К.О.
Партнер клуба
"издержки" это подключить один раз композером htmlpurifier

рассуждения о времени исполнения могли еще иметь смысл году в 99-м, когда придумали ббкоды, но полностью бессмысленны сейчас
 

doran7

Новичок
fixxxer написал(а):
"издержки" это подключить один раз композером htmlpurifier
Есть люди, которые так и делают. Но это довольно затратная процедура для сервера. Насчет времени генерации страницы. Если фильтровать html (htmlpurifier-ом или чем еще) при создании или редактировании сообщения, а потом отфильтрованный текст с разметкой хранить в БД в HTML, то это приемлемо. Я так и делаю, когда сообщение создает админ из админки, правда фильтрация при этом гораздо более простая чем через htmlpurifier. Админ ведь свой сайт валить не намерен. А вот для содания постов юзерами использую bb-разметку текста, с парсингом и хранением в БД в html.

fixxxer, как относишься к применению для фильтрации вместо htmlpurifier легкого фильтра htmLawed ? Я посмотрел его - симпатичная штуковина.
 

doran7

Новичок
По сравнению с htmlpurifier, скорее всего говнокод, но он легче на порядок. Для каких-то легких сайтов, возможно, сойдет. И еще - его легче модифицировать под свои цели.
 

doran7

Новичок

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
В развернутом виде рабочая папка HTMLPurifier 4.5.0 весит 2.45 Мб и содержит
89 папок и 817 файлов.
Это не является недостатком.
У меня самописная CMS вместе с форумом FluxBB весят в три раза меньше...
Это не является поводом для гордости.
 

doran7

Новичок
fixxxer написал(а):
Если тебе этот лапшекод понимать и модифицировать проще, чем код htmlpurifier, у меня для тебя плохие новости.
Почему только для меня? Для авторов и пользователей htmLawed - тоже. А потом, я его пока что не использую, а только присматриваюсь. И под разные задачи - свой инструмент. htmlpurifier - тоже не панацея от всего на все случаи жизни.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
И под разные задачи - свой инструмент.
А для каких задач можно использовать неисправный инструмент? В частности исходник, который выглядит так, будто его обфускатором обработали?

htmlpurifier - тоже не панацея от всего на все случаи жизни.
Я что-то не заметил, чтобы его предлагали как "панацею на все случаи жизни". Кажется, этот полемический приём называется "соломенное чучелко".
 

doran7

Новичок
Sad Spirit написал(а):
Я что-то не заметил, чтобы его предлагали как "панацею на все случаи жизни".
Я не заметил что кроме него, не мною, предлагалась и обсуждалась какая-то альтернатива.
 
Сверху