Вступление
Что такое 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] Это неверно
Создание ссылок
Ссылки на другой сайт В BBCode поддерживается несколько способов создания URL"ов.- Первый из них использует тег
, после знака = должен идти нужный URL. Например, для ссылки на phpbbex.com вы могли бы использовать:
Посетите форум phpBBex!
Это создаст следующую ссылку: Посетите форум phpBBex! Учтите, что ссылка будет открываться в том же или в новом окне, в зависимости от настроек браузера пользователя.
- Если вы хотите, чтобы в качестве текста ссылки показывался сам URL, вы можете просто сделать следующее:
http://phpbbex.com/
- Кроме того, phpBB поддерживает возможность, называемую Автоматические ссылки , это переведёт любой синтаксически правильный URL в ссылку без необходимости указания тегов и даже префикса http://. Например, ввод www.phpbbex.com в ваше сообщение приведёт к автоматической выдаче www.phpbbex.com при просмотре сообщения.
- То же самое относится и к адресам email, вы можете либо указать адрес в явном виде:
что выдаст [email protected] , или просто ввести [email protected] в ваше сообщение, и он будет автоматически преобразован при просмотре.
http://phpbbex.com/logo.png
неверно , что может привести к последующему удалению вашего сообщения, так что будьте аккуратнее.
Показ изображений в сообщениях
Добавление изображения в сообщение BBCode включает тег для добавления картинки в ваше сообщение. При этом следует помнить две очень важные вещи: во-первых, многих пользователей раздражает большое количество изображений, во-вторых, ваше изображение уже должно быть размещено в интернете (т. е. оно не может быть расположено только на вашем компьютере, если, конечно, вы не запустили на нём веб-сервер!). На данный момент нет возможности хранить изображения локально на phpBB (ожидается, что это ограничение будет снято в следующей версии phpBB). Для вывода изображения вы должны окружить его URL тегами . Например:http://phpbbex.com/logo.png
Как указано в предыдущем пункте, вы можете заключить изображение в теги , то есть
http://phpbbex.com/logo.png
Добавление вложений в сообщение Теперь вложения могут быть помещены в любой части сообщения при помощи нового тега BBCode , если вложения разрешены администратором конференции и если вы имеете необходимые права доступа. На странице размещения сообщения находится выпадающий список (соответственно кнопка) для размещения вложений в сообщении.
Цитирование и вывод форматированных текстов
Цитирование при ответах Есть два способа процитировать текст, со ссылкой и без.- Когда вы используете кнопку «Цитата» для ответа на сообщение, то его текст добавляется в поле ввода окружённым блоком
. Этот метод позволит вам цитировать со ссылкой на автора либо на что-то ещё, что вы туда впишете. Например, для цитирования отрывка текста, написанного Mr. Blobby, вы напишете:
Текст Mr. Blobby будет здесь
В результате перед текстом будут вставлены слова «Mr. Blobby писал(а):». Помните, вы должны заключить имя в кавычки "", они не могут быть опущены.
- Второй метод просто позволяет вам что-то процитировать. Для этого вам надо заключить текст в теги . При просмотре сообщения будет просто показан текст в блоке цитирования.
echo "This is some code";
Всё форматирование, используемое внутри тегов и , будет сохранено. Подсветка синтаксиса языка PHP может быть включена с помощью и рекомендуется при отправке сообщений с PHP-кодом для улучшения его удобочитаемости.
Создание списков
Создание маркированного списка BBCode поддерживает два вида списков: маркированные и нумерованные. Они практически идентичны своим эквивалентам из 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.
Если вы тоже встречали подобные библиотеки (корректно работающие с абзацам! 🙂) , интересно было бы узнать о них.
В BBCode поддерживается несколько способов создания URL"ов.
- Первый из них использует тег
, после знака = должен идти нужный URL. Например, для ссылки на phpBB.com вы могли бы использовать:
Посетите phpBB!
- Если вы хотите, чтобы в качестве текста ссылки показывался сам URL, вы можете просто сделать следующее:
http://www.phpbb.com/
- Кроме того phpBB поддерживает возможность, называемую Автоматические ссылки , это переведёт любой синтаксически правильный URL в ссылку без необходимости указания тегов и даже префикса http://. Например, ввод www.phpbb.com в ваше сообщение приведёт к автоматической выдаче www.phpbb.com при просмотре сообщения.
- То же самое относится и к адресам e-mail, вы можете либо указать адрес в явном виде:
что выдаст [email protected] или просто ввести [email protected] в ваше сообщение, и он будет автоматически преобразован при просмотре.
http://www.phpbb.com/images/phplogo.gif
неверно , что может привести к последующему удалению вашего сообщения, так что будьте аккуратнее.
BBCode is a special implementation of HTML. Whether you can actually use BBCode in your posts on the forum is determined by the administrator. In addition you can disable BBCode on a per post basis via the posting form. BBCode itself is similar in style to HTML, tags are enclosed in square brackets [ and ] rather than < and > and it offers greater control over what and how something is displayed. Depending on the template you are using you may find adding BBCode to your posts is made much easier through a clickable interface above the message area on the posting form. Even with this you may find the following guide useful.
Text Formatting
To alter the color or size of your text the following tags can be used. Keep in mind that how the output appears will depend on the viewers browser and system:
- Changing the color of text is achieved by wrapping it in
. You can specify either a recognized color name (eg. red, blue, yellow, etc.) or the hexadecimal triplet alternative, e.g. #FFFFFF, #000000. For example, to create red text you could use:
Hello!
Hello!
Both will output Hello!
- Changing the text size is achieved in a similar way using
. This tag is dependent on the template the user has selected but the recommended format is a numerical value representing the text size in percent, starting at 20 (very small) through to 200 (very large) by default. For example:
SMALL
will generally be SMALL
HUGE!
will be HUGE!
Yes, of course you can, for example to get someones attention you may write:
[b] LOOK AT ME!
this would output LOOK AT ME!
We don’t recommend you output lots of text that looks like this though! Remember it is up to you, the poster, to ensure tags are closed correctly. For example the following is incorrect:
[b][u] This is wrong
Quoting and outputting fixed-width text
There are two ways you can quote text, with a reference or without.
- When you utilize the Quote function to reply to a post on the board you should notice that the post text is added to the message window enclosed in a
block. This method allows you to quote with a reference to a person or whatever else you choose to put! For example to quote a piece of text Mr. Blobby wrote you would enter:
The text Mr. Blobby wrote would go here
The resulting output will automatically add "Mr. Blobby wrote:" before the actual text. Remember you must include the quotation marks "" around the name you are quoting, they are not optional.
- The second method allows you to blindly quote something. To utilize this enclose the text in tags. When you view the message it will simply show the text within a quotation block.
If you want to output a piece of code or in fact anything that requires a fixed width, e.g. Courier type font you should enclose the text in tags, e.g.
echo "This is some code";
All formatting used within tags is retained when you later view it. PHP syntax highlighting can be enabled using and is recommended when posting PHP code samples as it improves readability.
Generating lists
BBCode supports two types of lists, unordered and ordered. They are essentially the same as their HTML equivalents. An unordered list outputs each item in your list sequentially one after the other indenting each with a bullet character. To create an unordered list you use and define each item within the list using [*] . For example to list your favourite colors you could use:
[*]
Red
[*]
Blue
[*]
Yellow
This would generate the following list:
- Yellow
The second type of list, an ordered list, gives you control over what is output before each item. To create an ordered list you use to create a numbered list or alternatively for an alphabetical list. As with the unordered list, items are specified using [*] . For example:
[*]
Go to the shops
[*]
Buy a new computer
[*]
will generate the following:
- Go to the shops
- Buy a new computer
- Swear at computer when it crashes
[*]
The first possible answer
[*]
The second possible answer
[*]
The third possible answer
- The first possible answer
- The second possible answer
- The third possible answer
Creating Links
PhpBB BBCode supports a number of ways of creating URIs (Uniform Resource Indicators) better known as URLs.
- The first of these uses the
tag, whatever you type after the = sign will cause the contents of that tag to act as a URL. For example to link to phpBB.com you could use:
Visit phpBB!
Visit phpBB! Please notice that the link opens in the same window or a new window depending on the users browser preferences.
- If you want the URL itself displayed as the link you can do this by simply using:
http://www.phpbb.com/
This would generate the following link, http://www.phpbb.com/
- Additionally, phpBB features something called Magic Links , this will turn any syntactically correct URL into a link without you needing to specify any tags or even the leading http://. For example typing www.phpbb.com into your message will automatically lead to www.phpbb.com being output when you view the message.
is not correct which may lead to your post being deleted so take care.
Showing images in posts
PhpBB BBCode incorporates a tag for including images in your posts. Two very important things to remember when using this tag are: many users do not appreciate lots of images being shown in posts and secondly the image you display must already be available on the internet (it cannot exist only on your computer for example, so upload the image to your site, then link to it). To display an image you must surround the URL pointing to the image with tags. For example:
https://www.google.com/intl/en_ALL/images/logo.gif
As noted in the URL section above you can wrap an image in a tag if you wish, e.g.
https://www.google.com/intl/en_ALL/images/logo.gif