@Hint

Простой язык разметки на подобии bb-кодов с надежным парсером на php?

Для внутренней системы сообщений нужен какой-то простой язык разметки, который позволит пользователям вставлять в сообщения какие-либо теги, которые будут заменяться на сервере на генерируемый html. Эти теги практически никак не будут пересекаться с языком разметки html, т. е. речь в целом не о стилизации. Обработка тегов из коробки не нужна или должна быть настраиваемой (никаких h1, bold, таблиц и прочего). Более того, сообщения с тегами чаще всего будут отправляться само системой (системные сообщения). Например, вставка ссылки на профиль пользователя через тег [user=1]Admin[/user], который будет заменен на правильную ссылку с именем и аватаркой. Можно конечно сразу для системных сообщений генерировать html, но это неудобно, т. к. шаблоны могут меняться. При этом система разметки должна накладывать минимум ограничений на доступные пользователям символы (например, в случае html стали бы недоступны знаки < и >). Уже много лет используется самодельный парсер bb-кодов, но хочется перейти на что-то массовое и более гибкое. Требуется простота и надежность (уверенность в отсутствии XSS).
  • Вопрос задан
  • 133 просмотра
Пригласить эксперта
Ответы на вопрос 4
@LiguidCool
XML может сойдет?
Более того, сообщения с тегами чаще всего будут отправляться само системой (системные сообщения).

тем более XML или JSON уже стандарт для всяческих WEB API.
Ответ написан
Denormalization
@Denormalization
Можно использовать что-то вроде Mustache.
Ответ написан
Комментировать
sanantech
@sanantech
PHP/Java Developer
Я лично в одном из проектов использовал визивиг хабра, добавив несколько своих функций:)
Ответ написан
Комментировать
@kalyabus
А в чем проблема, используйте HTMLPurifier: htmlpurifier.org мощная вещь. В свое время для простоты использовали BBCode, на PHP есть простая до безобразия библиотечка: https://github.com/jbowens/jBBCode но очень быстро отказались в пользу разметки на html с HTMLPurifier
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы