Ведущие мужчины faq php mode bbcode. Памятка по использованию BB-кодов (bbCode)
Что такое BBCode? BBCode - это специальный вариант HTML. Сможете ли вы использовать BBCode в ваших сообщениях или нет, определяется администратором форумов. Кроме того, вы сможете отключить использование BBCode в конкретном сообщении при его размещении. Сам BBCode по стилю похож на HTML, теги заключены в квадратные скобки [ и ], а не в < и >; он даёт больше возможностей управления тем, как выводятся данные. При использовании некоторых шаблонов вы сможете добавлять BBCode в ваши сообщения, пользуясь простым интерфейсом, расположенным над полем для ввода текста. Но даже в этом случае данное руководство может оказаться полезным.Форматирование текста
Как сделать текст жирным, наклонным или подчёркнутым BBCode включает теги для быстрого изменения стиля шрифта, сделать это можно следующими способами:- Чтобы сделать текст жирным, заключите его в [b]
, например:
[b] Привет
станет Привет
- Для подчёркивания используйте [u]
, например:
[u] Доброе утро
станет Доброе утро
- Курсив делается тегами [i]
, например:
Это [i] здорово!
выдаст Это здорово!
- Цвет текста можно изменить, окружив его
. Вы можете указать либо известное имя цвета (red, blue, yellow и т. п.), или шестнадцатеричное представление, например #FFFFFF, #000000. Таким образом, для создания красного текста вы можете использовать:
Привет!
Привет!
оба способа дадут в результате Привет!
- Изменение размера достигается аналогичным образом при использовании
. Этот тег зависит от используемых шаблонов, рекомендуемый формат - число, показывающее размер текста в процентах, от 20% (очень маленький) до 200% (очень большой) от размера по умолчанию. Например:
МАЛЕНЬКИЙ
скорее всего будет МАЛЕНЬКИЙ
в то время как:
ОГРОМНЫЙ!
будет ОГРОМНЫЙ!
[b] ПОСМОТРИТЕ НА МЕНЯ!
что выдаст ПОСМОТРИТЕ НА МЕНЯ!
[b][u] Это неверно
Цитирование и вывод форматированных текстов
Цитирование при ответах Есть два способа процитировать текст, со ссылкой и без.- Когда вы используете кнопку «Цитата» для ответа на сообщение, то его текст добавляется в поле ввода окружённым блоком
. Этот метод позволит вам цитировать со ссылкой на автора либо на что-то ещё, что вы туда впишете. Например, для цитирования отрывка текста, написанного Mr. Blobby, вы напишете:
Текст Mr. Blobby будет здесь
В результате перед текстом будут вставлены слова «Mr. Blobby писал(а):». Помните, вы должны заключить имя в кавычки "", они не могут быть опущены.
- Второй метод просто позволяет вам что-то процитировать. Для этого вам надо заключить текст в теги . При просмотре сообщения будет просто показан текст в блоке цитирования.
echo "This is some code";
Всё форматирование, используемое внутри тегов , будет сохранено. Подсветка синтаксиса языка PHP может быть включена с помощью и рекомендуется при отправке сообщений с PHP-кодом для улучшения его удобочитаемости.
Создание списков
Создание маркированного списка BBCode поддерживает два вида списков: маркированные и нумерованные. Они практически идентичны своим эквивалентам из HTML. В маркированном списке все элементы выводятся последовательно, каждый отмечается символом-маркером. Для создания маркированного списка используйте и определите каждый элемент при помощи [*] . Например, чтобы вывести свои любимые цвета, вы можете использовать:
[*]
Красный
[*]
Синий
[*]
Жёлтый
Это выдаст такой список:
- Красный
- Синий
- Жёлтый
[*]
Пойти в магазин
[*]
Купить новый компьютер
[*]
выдаст следующее:
- Пойти в магазин
- Купить новый компьютер
- Обругать компьютер, когда случится ошибка
[*]
Первый возможный ответ
[*]
Второй возможный ответ
[*]
Третий возможный ответ
что выдаст
- Первый возможный ответ
- Второй возможный ответ
- Третий возможный ответ
Создание ссылок
Ссылки на другой сайт В BBCode поддерживается несколько способов создания URL"ов.- Первый из них использует тег
, после знака = должен идти нужный URL. Например, для ссылки на phpBB.com вы могли бы использовать:
Посетите phpBB!
- Если вы хотите, чтобы в качестве текста ссылки показывался сам URL, вы можете просто сделать следующее:
http://www.phpbb.com/
- Кроме того, phpBB поддерживает возможность, называемую Автоматические ссылки , это переведёт любой синтаксически правильный URL в ссылку без необходимости указания тегов и даже префикса http://. Например, ввод www.phpbb.com в ваше сообщение приведёт к автоматической выдаче www.phpbb.com при просмотре сообщения.
- То же самое относится и к адресам email, вы можете либо указать адрес в явном виде:
что выдаст [email protected] , или просто ввести [email protected] в ваше сообщение, и он будет автоматически преобразован при просмотре.
http://www.google.com/intl/en_ALL/images/logo.gif
неверно , что может привести к последующему удалению вашего сообщения, так что будьте аккуратнее.
Введение
bbCode — Bulletin Board Code, или язык разметки, используемый для форматирования сообщений на многих электронных досках объявлений (BBS) и форумах. Для форматирования текста используются теги, подобные тегам HTML. В отличие от тегов HTML, теги bbCode заключают в квадратные скобки. Перед отображением страницы движок форума производит разбор текста и преобразовывает bbCode в HTML-код.
На многих форумах возможность использования BB-кодов настраивается администратором индивидуально на каждый раздел форума. Поэтому, прежде чем использовать BB-коды в сообщениях, необходимо убедиться, что они разрешены.
Форматирование шрифта
Базовые тэги для работы с текстом:
[p] Обычный абзац с отступом.
Абзац, которому можно задавать стиль.
текст
* Здесь и далее «стиль» — это аналог style в HTML.
текст аналогично в HTML
** С тэгами [p] можно использовать другие тэги, такие как [b], [i], [s] и т.д.
Текст, которому с помощью стиля можно менять свойства.
Ограниченная область, которой с помощью стиля можно менять свойства (положение, границы, отступы, свойства содержимого и т.д.).
* По умолчанию границы областей не видны. На одной странице может быть сразу несколько областей .
Форматирование текста:
[b] Важный текст, полужирный
[i] Важный текст, курсив
Просто полужирный
Просто курсив
[u] Подчёркнутый текст
[s] Зачёркнутый текст — аналогично варианту
Уменьшенный шрифт
Знак сноски сверху или индекс снизу от текста
Удалённый текст
Размеры шрифта:
Шрифт размером 13 пунктов
Шрифт размером 15 пунктов
Шрифт размером 9 пикселей
Шрифт размером 12 пикселей
Шрифт размером 15 пикселей
Размер 0
Размер +1
Размер +2
Возможные варианты размеров шрифтов (визуальная оценка) доступны .
Заголовки:
Заголовок 1-го уровня
Заголовок 2-го уровня
Заголовок 3-го уровня
Заголовок 4-го уровня
Заголовок 5-го уровня
Заголовок 6-го уровня
Оформление текста с помощью шрифтов:
Шрифт Comic Sans Ms
Шрифт Monotype Corsiva
Шрифт Tahoma
Возможные варианты типов шрифтов (наименования и визуальная оценка) доступны .
Оформление текста с помощью цвета:
Красный текст
* Можно пользоваться стандартными словесными обозначениями цветов: Red, Green, Blue и т.д.
Синий текст
* Цифра #0000ff означает синий цвет в RGB палитре.
Голубой фон
* У фона тоже можно менять цвет.
Синий текст, серый фон
Некоторые предопределённые цвета:
Black White Red Green Blue Purple Firebrick Maroon OrangeRed MidnightBlue CornflowerBlue
Cyan Yellow Magenta DarkGreen DarkGoldenrod Gold Orchid BlueViolet Burlywood PeachPuff
Некоторые цвета в шестнадцатиричном коде — интенсивность красного, зелёного и синего (RR GG BB ):
#000000 #FFFFFF #FF0000 #00FF00 #0000FF #FF00FF #FF4444 #FF9999 #FFCCCC #9999FF #FF99FF #DDDDDD #FFE4C4 #CCCC99 #FF8DC #FA8072 #990000 #FF3030 #000080 #000066 #0000CD #AFEEEE #006400 #66FF00 #00B800 #DAA520 #FFCC33 #FFA500 #C71585 #8B008B #CC33FF
Возможные варианты палитры цветов и их кодов/наименований доступны .
Выравнивание текста и форматирование параграфов
Выравнивание текста:
Выравнивание текста по левой стороне
Выравнивание по левой стороне со стилем
Выравнивание в абзаце влево
Выравнивание текста по центру
Выравнивание по центру со стилем
Выравнивание в абзаце по центру
Выравнивание текста по правой стороне
Выравнивание по правой стороне со стилем
Выравнивание в абзаце справа
Выравнивание текста по обеим сторонам
Выравнивание по обеим сторонам со стилем
Выравнивание в абзаце по обеим сторонам
* Выравнивание текстов по обеим сторонам отображается для текстов, имеющих длину более одной строки.
Оформление сносок (комментариев) с отступом абзаца:
[q] Цитата в строке
Цитата в строке со свойствами
Процитированный в отдельном блоке текст, у которого будет
небольшой отступ слева и особое оформление (стиль форума).
Примеры:
Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet
Форматирование параграфов и областей:
Привет! В этом абзаце первое предложение будет с "красной" строки, т.е. с отступом. Прямо как в книгопечати. Правда, в Интернете это редкая практика. Абзацы должны разделяться просто пустым промежутком.
Преформатированый текст сохраняет отступы слева и между словами и устанавливает те отступы, что вы укажите пробелами. Предупреждение! Тэг не делает переноса строки автоматом!Форматирование списков
Используем тэг или для маркированных списков:
- Один из пунктов списка
- Другой такой пункт
- Ещё один пункт.
[*]
Другой такой пункт
[*]
Ещё один пункт.
Для пронумерованных списков используем тэг :
- Один из пунктов списка
- Другой такой пункт
- Ещё один пункт.
[*]
Один из пунктов списка
[*]
Другой такой пункт
[*]
Ещё один пункт.
Закрывающий тэг не обязателен для использования:
- Один из пунктов списка
- Другой такой пункт
- Ещё один пункт.
[*]
Один из пунктов списка
[*]
Другой такой пункт
[*]
Ещё один пункт.
Также возможно прямое указания вида списка:
— пронумерованный список
— алфавитный список
— список, пронумерованный римскими цифрами
Картинки
Http://img.cx/img/primer.jpg - пример вставки картинки.
Http://img.cx/img/primer.jpg
- картинка слева.
Http://img.cx/img/primer.jpg
- картинка справа.
* Данный код аналогичен коду в HTML:
Http://img.cx/img/primer.jpg
- картинка по центру.
* Данный код аналогичен коду в HTML:
Аналогичные тэги с названиями и всплывающими подсказками:
Важно! В названии картинки нельзя использовать кавычки!
Http://img.cx/img/primer.jpg - пример вставки картинки.
Http://img.cx/img/primer.jpg - картинка слева.
Http://img.cx/img/primer.jpg - картинка справа.
Http://img.cx/img/primer.jpg - картинка по центру.
Картинки с указанными размерами:
Http://img.cx/img/primer.jpg
- пример картинки с размером.
* Данный код аналогичен коду в HTML:
Http://img.cx/img/primer.jpg - картинка слева, с размером.
Http://img.cx/img/primer.jpg - картинка справа, с размером.
Вставка больших изображений с полосами прокрутки:
Http://www..jpg — картинка в выделенной области, если она больше доступного размера отображения на форуме.
Адрес
- открыть изображение в новом окне.
* Данный код аналогичен коду в HTML:
Адрес
- открыть изображение в том же окне.
* Данный код аналогичен коду в HTML:
У меня периодически появляется потребность в использовании «интерпретатора» BBCode в своих проектах (написанного на PHP), и постоянно нет времени искать какое-то более-менее удобоваримое решение, что в итоге выливается в использование или создание «костылей» для каждого конкретного случая.
Но вот, похоже, получилось найти то, что хотелось.
Моя претензия к подобным готовым решениям обычно в первую очередь заключается в неспособности этих библиотек правильно обрабатывать абзацы. Фактически они обычно вообще не используют абзацы (тэг P
), вместо этого в результате своей работы они просто вставляют тег
, заменяя обычные символы переноса строки. Я считаю такой метод эмулирования абзацев в 98 процентах, мягко говоря, не уместным. Но так как перенос строк по средствам
намного легче реализовать вместо «человеческих»
, так большинство и делает 🙁 Некоторые даже придумывают оправдания, что мол с br даже правильнее, отчасти, из-за подобной лени разработчиков различных готовых библиотек, другая часть людей думает, что тэг P
является устаревшим (ведь даже во многих готовых продуктах и сайтах абзацы формируются путем использования
) 🙂
Приступим
Но, кажется, есть свет в конце туннеля. Это готовый класс для работы с BBCode , который, судя по всему, отлично справляется со своей задачей (ничего лучше пока не видел). Единственный минус в том, что документация, представленная на сайте , не на русском языке. Этот минус я и хочу побороть в этой статье, приведя пример использования класса с русскими комментариями.
Для начала нужно скачать библиотеку (на момент написания статьи версия библиотеки была 0.3.3). В скачанном архиве в папке src вы обнаружите два нужных нам файла: stringparser.class.php и stringparser_bbcode.class.php.
Для примера предположим, что у нас есть пустой файл «index.php» и рядом с ним мы создадим папку «/bbcode/», содержащую в себе два упомянутых выше файла.
Для примера минимальное содержимое файла «index.php» должно быть таким (запустив этот пример можно будет сразу увидеть, работает ли библиотека):
< ?php //Вставляем файл библиотеки require_once "bbcode/stringparser_bbcode.class.php"; //Создаем объект класса StringParser_BBCode $bbcode = new StringParser_BBCode (); //Добавляем объекту класса понятие о тэге [b] //(в итоге только этот тэг и будет //обрабатываться этим классом) $bbcode->addCode ("b", "simple_replace", null, array ("start_tag" => "", "end_tag" => ""), "inline", array ("block", "inline"), array ()); //Обрабатываем тестовую строку и выводим ее в браузер echo $bbcode->parse ("Тестовый текст, это слово должно быть [b]жирным"); ?>
Функция addCode
Наибольший интерес в этом коде может вызвать, пожалуй, функция addCode у объекта класса StringParser_BBCode, вот ее прототип и список описание параметров:
Void addCode (string $code, string $type, string $callback, string $params, string $content_type, array $allowed_in, array $not_allowed_in);
Эта функция добавляет понятие о тех или иных кодах (bb-кодах) для объекта класса, чтоб он мог потом обнаружить эти коды в тексте и соответствующим образом обработать их. Т.е. можно сказать, что изначально объект класса StringParser_BBCode вообще ничего не знает о стандартных bb-кодах и не способен обработать как-либо их. Поэтому этот объект нужно будет после каждой инициализации «обучать» всем разновидностям bb-кодов.
$code (в примере имеет значение ‘b’) Код, который нужно искать в тексте для обработки. Т.е. если указать код test , то потом в обрабатываемом тексте будет искаться тэг и обрабатываться в соответствии с указаниями в других параметрах рассматриваемой функции. $type (в примере имеет значение ‘simple_replace’) Указание того, как тэг должен обрабатываться (какого он типа). Есть различные предопределенные типы тэгов, которые будут описаны ниже. В нашем же примере указан тип ‘simple_replace’ который указывает на то, что тэг будет парным (открывающийся тэг [b] и закрывающийся ) и что эти тэги будут заменены на указанные ниже html тэги. $callback (в примере имеет значение null) Позволяет указать имя функции, которая должна будет вызваться при обработке найденного тэга в тексте. В случае с типом тэга ‘simple_replace’ такая функция не вызывается, и, соответственно, в этом параметре можно указать null. $params (в примере имеет значение array(‘start_tag’ => ‘‘, ‘end_tag’ => ‘ ‘)) В этом параметре в основном указывается, какой нужно вставлять html тэг взамен bb тэга. Наименование параметров напрямую зависит от того, какой тип тэга мы указали в параметре $type. $content_type (в примере имеет значение ‘inline’) Тип внутреннего содержимого тега. Может принимать значения: ‘inline’, ‘block’, ‘link’, ‘image’. Если я не ошибаюсь, можно прописывать и свои типы чтобы потом можно было указывать для этого содержимого свои индивидуальные фильтры (пример использования фильтров смотрите ниже). $allowed_in (в примере имеет значение array (‘block’, ‘inline’)) В этом параметре можно указать, внутри каких типов объектов может находиться создаваемый bb-код (его обработка будет просто игнорироваться в ином случае). В нашем примере мы указали, что элемент может находиться как внутри блочных элементов, так и внутри линейных. $not_allowed_in (в примере имеет значение array ()) Имеет назначение, противоположное по смыслу предыдущему параметру.
Виды обработки тэгов
Описание вариантов значения параметра $type в функции addCode.
‘simple_replace’
Описывает простой парный тэг. При использовании этого типа обработки тэга в параметре функции ‘params’ должны обязательно присутствовать две ячейки: $params[‘start_tag’] и $params[‘end_tag’]. ‘start_tag’ должен в себе содержать аналог открывающегося тэга в хтмл, а ‘end_tag’ – закрывающегося тэга соответственно.
‘simple_replace_single’
То же самое, что ‘simple_replace’, но используется только лишь для одинарных тэгов, которые, собственно говоря, не имеют содержимого (типа br, hr и т.п.). Требует наличия только параметра $params[‘start_tag’].
‘callback_replace’
При этом типе вы перекладываете на себя обработку по найденным совпадениям (с помощью своей callback функции) для парного тэга.
‘callback_replace_single’
То же самое, что и ‘callback_replace’, но только для одинарных тэгов.
‘usecontent’
То же самое что и ‘callback_replace’, только в содержимом такого тэга другие тэги не будут обрабатываться, например, это удобно для тэга code.
‘usecontent?’
Этот тип может себя вести как ‘usecontent’ или же как ‘callback_replace’ в зависимости от ситуации. Актуальность того или иного варианта определяется за счет присутствия заранее предполагаемого атрибута в bb тэге. Если атрибут найден, то будет использоваться обработка ‘callback_replace’, в другом случае тэг будет обрабатываться как ‘usecontent’. Имя атрибута для поиска указывается через параметр $params[‘usecontent_param’]. Если указано имя default, то подразумевается значение атрибута, присвоенное непосредственно тэгу, например, , значением атрибута default будет текст «http://link». Этот прием часто используется, например, для тэга . Этот тэг может использоваться в двух формах: http://www.example.com/ и Текст ссылки, а так же [b]жирный текст. В первом случае будет использоваться тип ‘usecontent’, т.к. текст ссылки должен выводиться без какого-либо форматирования (и, собственно, сама ссылка будет некорректна, если в ней будут посторонние символы). В другом случае должен быть использован тип ‘callback_replace’, т.к. сама ссылка передается отдельным параметром, а текст, обрамленный в ссылку, вполне может содержать в себе какое-то форматирование.
Примечание:
Можно указать несколько параметров для их поиска, для чего в $params[‘usecontent_param’] нужно передать не строку, а массив, содержащий строки. Например: $bbcode->addCode (…, array(‘usecontent_param’ => array (‘parameter1’, ‘parameter2’)), …);.
‘callback_replace?’
Является противоположным вариантом типа ‘usecontent?’. Если один из атрибутов, указанных в usecontent_param, встречается в тэге, он будет обработан как ‘usecontent’, в противном случае как ‘callback_replace’.
Пример кода из «боевых» условий
Вот пример файла index.php с более расширенной конфигурацией класса для обрабатывания большего числа тэгов, в нем же и можно понять, как работают callback функции и т.п.:
< ?php
//Вставляем файл библиотеки
require_once "bbcode/stringparser_bbcode.class.php";
//Приводит разнообразные переводы строк
//разных операционных систем в единый формат (\n)
function convertlinebreaks ($text) {
return preg_replace ("/\015\012|\015|\012/", "\n", $text);
}
//Удалить все символы, кроме переводов строк
function bbcode_stripcontents ($text) {
return preg_replace ("/[^\n]/", "", $text);
}
//Функция для обработки ссылок
function do_bbcode_url ($action, $attributes, $content, $params, $node_object) {
if (!isset ($attributes["default"])) {
$url = $content;
$text = htmlspecialchars ($content);
} else {
$url = $attributes["default"];
$text = $content;
}
//Часть функции, которая занимается
//только валидацией данных тэга
if ($action == "validate") {
if (substr ($url, 0, 5) == "data:" || substr ($url, 0, 5) == "file:"
|| substr ($url, 0, 11) == "javascript:" || substr ($url, 0, 4) == "jar:") {
return false;
}
return true;
}
//Непосредственное преобразование тэга в
//html вариант с возвращением результата
return "".$text."";
}
// Функция для вставки изображений
function do_bbcode_img ($action, $attributes, $content, $params, $node_object) {
//Часть функции, которая занимается
//только валидацией данных тэга
if ($action == "validate") {
if (substr ($content, 0, 5) == "data:" || substr ($content, 0, 5) == "file:"
|| substr ($content, 0, 11) == "javascript:" || substr ($content, 0, 4) == "jar:") {
return false;
}
return true;
}
//Непосредственное преобразование тэга в
//html вариант с возвращением результата
return "";
}
//Создаем объект класса StringParser_BBCode
$bbcode = new StringParser_BBCode();
//Добавляем фильтр (подробнее см. офф. документацию),
//задействуя нашу функцию convertlinebreaks, которая будет
//преобразовывать переводы строки в тексте к единому
$bbcode->addFilter (STRINGPARSER_FILTER_PRE, "convertlinebreaks");
//Добавляем свои парсеры для разных типов объектов
//(подробнее см. офф. документацию)
//Мы указываем, через какую функцию должно пройти
//содержимое этих тэгов, например, через функцию
//htmlspecialchars для предотвращения XSS и т.д.
$bbcode->addParser (array ("block", "inline", "link", "listitem"), "htmlspecialchars");
$bbcode->addParser (array ("block", "inline", "link", "listitem"), "nl2br");
$bbcode->addParser ("list", "bbcode_stripcontents");
//Добавляем bb-код , используемый в виде:
//Текст заголовка первого уровня
$bbcode->addCode ("h1", "simple_replace", null, array ("start_tag" => "", "end_tag" => "
"),
"block", array ("listitem", "block", "link"), array ());
//Добавляем bb-код , используемый в виде:
//Текст заголовка второго уровня
$bbcode->addCode ("h2", "simple_replace", null, array ("start_tag" => "", "end_tag" => "
"),
"block", array ("listitem", "block", "link"), array ());
//Добавляем bb-код , используемый в виде:
//Текст заголовка третьего уровня
$bbcode->addCode ("h3", "simple_replace", null, array ("start_tag" => "", "end_tag" => "
"),
"block", array ("listitem", "block", "link"), array ());
//Добавляем bb-код , используемый в виде:
//Текст заголовка четвертого уровня
$bbcode->addCode ("h4", "simple_replace", null, array ("start_tag" => "", "end_tag" => "
"),
"block", array ("listitem", "block", "link"), array ());
//Добавляем bb-код , используемый в виде:
//Текст заголовка пятого уровня
$bbcode->addCode ("h5", "simple_replace", null, array ("start_tag" => "", "end_tag" => "
"),
"block", array ("listitem", "block", "link"), array ());
//Добавляем bb-код , используемый в виде:
//Текст заголовка шестого уровня
$bbcode->addCode ("h6", "simple_replace", null, array ("start_tag" => "", "end_tag" => "
"),
"block", array ("listitem", "block", "link"), array ());
//Устанавливаем флаги для bb-кодов с h1 до h6,
//указывая, что они являются блочными элементами,
//что будет в дальнейшем благотворно влиять на умную
//генерацию html кода. Такой элемент, к примеру, не сможет
//находиться внутри других блочных элементов
$bbcode->setCodeFlag("h1", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT);
$bbcode->setCodeFlag("h2", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT);
$bbcode->setCodeFlag("h3", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT);
$bbcode->setCodeFlag("h4", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT);
$bbcode->setCodeFlag("h5", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT);
$bbcode->setCodeFlag("h6", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT);
//Добавляем bb-код [b], используемый в виде:
//[b]выделенный текст
$bbcode->addCode ("b", "simple_replace", null, array ("start_tag" => "", "end_tag" => ""),
"inline", array ("listitem", "block", "inline", "link"), array ());
//Добавляем bb-код [i], используемый в виде:
//[i]наклонный текст
$bbcode->addCode ("i", "simple_replace", null, array ("start_tag" => "", "end_tag" => ""),
"inline", array ("listitem", "block", "inline", "link"), array ());
//Добавляем bb-код , используемый в виде:
//http://www.needsite.domain и
//Текст ссылки
$bbcode->addCode ("url", "usecontent?", "do_bbcode_url", array ("usecontent_param" => "default"),
"link", array ("listitem", "block", "inline"), array ("link"));
//Добавляем bb-код , используемый в виде:
//http://www.needsite.domain
$bbcode->addCode ("link", "callback_replace_single", "do_bbcode_url", array (),
"link", array ("listitem", "block", "inline"), array ("link"));
//Добавляем bb-код , используемый в виде:
//http://www.needsite.domain/img.jpg
$bbcode->addCode ("img", "usecontent", "do_bbcode_img", array (),
"image", array ("listitem", "block", "inline", "link"), array ());
//Добавляем bb-код (по смыслу то же самое,
//что и ), используемый в виде:
//http://www.needsite.domain/img.jpg
$bbcode->addCode ("bild", "usecontent", "do_bbcode_img", array (),
"image", array ("listitem", "block", "inline", "link"), array ());
//Создаем группу image из bb-кодов img и bild
//для последующей возможности задания
//неких правил для этих групп
$bbcode->setOccurrenceType ("img", "image");
$bbcode->setOccurrenceType ("bild", "image");
//Указываем, что тэги из группы image
//могут встречаться (обрабатываться) в тексте не более
//двух раз. В нашем случае это нужно для того,
//чтобы пользователь не мог вставить более двух
//картинок в текст сообщения
$bbcode->setMaxOccurrences ("image", 2);
//Добавляем bb-код
$bbcode->addCode ("list", "simple_replace", null, array ("start_tag" => "", "end_tag" => "
"),
"list", array ("block", "listitem"), array ());
//Добавляем bb-код [*], указывая, что этот тэг
//может использоваться только внутри тэга
//с типом list (этот тип мы присвоили выше тэгу )
$bbcode->addCode ("*", "simple_replace", null, array ("start_tag" => "
Послесловие
Я, конечно же, не сделал полный перевод документации, а только самый необходимый минимум, за более подробной документацией вы можете обратиться на официальный сайт (вообще, там описано куда больше различных возможностей).
Эту библиотеку также не составляет труда внедрить в какой-либо php фреймворк, я, к примеру, с успехом проделывал это для cackePHP.
Если вы тоже встречали подобные библиотеки (корректно работающие с абзацам! 🙂) , интересно было бы узнать о них.