Skip to content
irbis-team.com
irbis-team.com

  • Главная
  • Курсы
    • Регулярные выражения
    • Вводный курс
    • Гостевая книга
  • Для бывалых
    • Школа программирования
    • Введение в ООП
  • Скрипты
    • BB-code
    • Почтовый класс
irbis-team.com

BB-code

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

/**     
* bb-tags and smilies replacement function     
* Функция замены bb-тегов и смайликов  
* @param string  
* @return string    
*/ 
    function bb_tags($text) 
    {   
       // Создаем массив bb-тегов 
        $bb = array(
                    '[B]', 
                    '[/B]', 
                    '[I]', 
                    '[/I]', 
                    '[S]', 
                    '[/S]', 
                    '[U]', 
                    '[/U]', 
                    '[:)]', 
                    '[:(]', 
                    '[;)]', 
                    '[:D]' 
                   );  
       // Создаем массив тегов HTML 
        $tag = array(
                     '<b>', 
                     '</b>', 
                     '<i>', 
                     '</i>', 
                     '<s>', 
                     '</s>', 
                     '<u>', 
                     '</u>',  
                     '<img src="smiles/1.gif" />', 
                     '<img src="smiles/2.gif" />',  
                     '<img src="smiles/3.gif" />', 
                     '<img src="smiles/4.gif" />' 
                ); 
        // Заменяем элемент первого на элемент второго массива соответственно                 
        return str_ireplace($bb, $tag, $text);             
    } 

Если Вы делали гостевую книгу и использовали эту функцию, то могли заметить, что она не сохраняет оригинальное форматирование.
Нельзя сделать          много         пробелов       подряд, не получаются отступы и абзацы. Все это происходит из-за того, что HTML отображает на странице только один пробел. Если нужно несколько подряд, то требуется так называемый “неразрушаемый пробел”, который обозначается вот таким набором символов. &nbsp; А значит нам нужно заменить два идущих пробела на две этих комбинации. Тогда сохранится форматирование. Однако есть еще символ табуляции. Он тоже не отображается браузером. По этому заменим и его. За одно удалим символ возврата каретки (он только мешает)

1 2 3 4 5 6 7<?php

        $text = str_replace("\r", "", $text);
        $text = str_replace("\t", "    ", $text); 
        $text = str_replace('  ', '&nbsp;&nbsp;', $text);
©2025 irbis-team.com | WordPress Theme by SuperbThemes