





Шаг 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 |
С одной задачей справились. Ну а раз взялись за форматирование, то сделаем все преобразования сразу в функции. Заменим спецсимволы на эквиваленты и перенос строки на тег <br />. А чтобы следить за метаморфозами, присовокупим небольшенькую форму:
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
<?php |
вот теперь можно попробовать обработать текст. Оригинальное форматирование сохранится. Можно даже попробовать запостить текст с bb-тегами. Они будут обработаны. И кажется, что все в порядке, однако сложности только начинаются.