BB-code. (образец)
Шаг 1. Форматирование | Шаг 3. Непарные теги | Шаг 5. Внешние форматтеры |
Шаг 2. Длинное слово | Шаг 4. Ссылки, картинки и видео | Шаг 6. Оптимизация |
Шаг 1
Форматирование
Мы уже встречались с таким явлением, как BB-теги. Это название кстати происходит вовсе не из-за тегов [b][/b], как многие думают. На самом деле это аббривеатура английского Bulletin Board , что переводится, как “доска объявлений”. Именно для таких сайтов и была придумана эта псевдо-разметка.
Для чего она нужна. Дело в том, что хочется дать пользователю некоторые инструменты для форматирования текста, чтобы он был повыразительнее. Но дать доступ к HTML нельзя, ибо сразу же найдутся умельцы и напихают в него скриптов. Да и простому юзеру очень сложно понять, что такое теги и с чем их надо кушать.
А вот такая разметка убивает сразу трех зайцев. Упрощает интерфейс, перекрывает доступ к HTML и дает возможность хранить в базе текст без разметки, что повышает безопасность.
Но у такого вида форматирования есть куча недостатков. Давайте разберем их по порядку и попытаемся исправить.
И так, рассмотрим внимательно ту функцию, которую мы применяли в гостевой книге. Она довольно слабенькая и совсем небезопасная.
Нам же нужно что то типа этого. Так что начнем потихоньку её приводить в порядок.
Приступим.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <?php |
Если Вы делали гостевую книгу и использовали эту функцию, то могли заметить, что она не сохраняет оригинальное форматирование.
Нельзя сделать много пробелов подряд, не получаются отступы и абзацы. Все это происходит из-за того, что HTML отображает на странице только один пробел. Если нужно несколько подряд, то требуется так называемый “неразрушаемый пробел”, который обозначается вот таким набором символов. А значит нам нужно заменить два идущих пробела на две этих комбинации. Тогда сохранится форматирование. Однако есть еще символ табуляции. Он тоже не отображается браузером. По этому заменим и его. За одно удалим символ возврата каретки (он только мешает)
1 2 3 4 5 6 7 | <?php |