|
Веб-курсы Что это? Оглавление Основы Основы основ Практика Гостевая книга Простой сайт Структура сайта (MVC) Ядро (Light) Ядро Гостевая на SQL Статические страницы Модуль новостей Система регистрации Теория Дебаггинг Регулярные выражения Введение в ООП Паттерны проектирования Репозитарий BB-code Почтовый класс Пагинатор Всякие полезности Download Полезные утилиты Разное Видеокурсы Последние изменения Вопросы и замечания сюда Реклама Диеты для похудения Фреймворк Kohana. Обучение. Мануал на русском. Direct software marketing conglomerate |
Шаг 1ФорматированиеМы уже встречались с таким явлением, как BB-теги. Это название кстати происходит вовсе не из-за тегов [b][/b], как многие думают. На самом деле это аббривеатура английского Bulletin Board , что переводится, как "доска объявлений". Именно для таких сайтов и была придумана эта псевдо-разметка.Для чего она нужна. Дело в том, что хочется дать пользователю некоторые инструменты для форматирования текста, чтобы он был повыразительнее. Но дать доступ к HTML нельзя, ибо сразу же найдутся умельцы и напихают в него скриптов. Да и простому юзеру очень сложно понять, что такое теги и с чем их надо кушать. А вот такая разметка убивает сразу трех зайцев. Упрощает интерфейс, перекрывает доступ к HTML и дает возможность хранить в базе текст без разметки, что повышает безопасность. Но у такого вида форматирования есть куча недостатков. Давайте разберем их по порядку и попытаемся исправить. И так, рассмотрим внимательно ту функцию, которую мы применяли в гостевой книге. Она довольно слабенькая и совсем небезопасная. Нам же нужно что то типа этого. Так что начнем потихоньку её приводить в порядок. Приступим.
Если Вы делали гостевую книгу и использовали эту функцию, то могли заметить, что она не сохраняет оригинальное форматирование. Нельзя сделать много пробелов подряд, не получаются отступы и абзацы. Все это происходит из-за того, что HTML отображает на странице только один пробел. Если нужно несколько подряд, то требуется так называемый "неразрушаемый пробел", который обозначается вот таким набором символов. А значит нам нужно заменить два идущих пробела на две этих комбинации. Тогда сохранится форматирование. Однако есть еще символ табуляции. Он тоже не отображается браузером. По этому заменим и его. За одно удалим символ возврата каретки (он только мешает)
С одной задачей справились. Ну а раз взялись за форматирование, то сделаем все преобразования сразу в функции. Заменим спецсимволы на эквиваленты и перенос строки на тег <br />. А чтобы следить за метаморфозами, присовокупим небольшенькую форму:
вот теперь можно попробовать обработать текст. Оригинальное форматирование сохранится. Можно даже попробовать запостить текст с bb-тегами. Они будут обработаны. И кажется, что все в порядке, однако сложности только начинаются. |