Абазия faq php mode bbcode. Памятка по использованию BB-кодов (bbCode). Цитирование и вывод форматированных текстов

У меня периодически появляется потребность в использовании «интерпретатора» 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" => "
  • ", "end_tag" => "
  • "), "listitem", array ("list"), array ()); //Устанавливаем флаги для тэгов и [*] //Указываем, что для кода [*] закрывающийся тэг //не обязателен, таким образом, возможна будет //следующая конструкция: // //[*] Item //[*] Item // //Закрывающий тэг будет добавляться автоматически //в процессе формирования html кода $bbcode->setCodeFlag ("*", "closetag", BBCODE_CLOSETAG_OPTIONAL); //Как я понял, этот флаг обозначает, что тэг [*] //всегда может быть использован только //в начале новой строки $bbcode->setCodeFlag ("*", "paragraphs", true); // является блочным элементом $bbcode->setCodeFlag ("list", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); //Перед открывающимся тэгом //символ строки будет устранен $bbcode->setCodeFlag ("list", "opentag.before.newline", BBCODE_NEWLINE_DROP); //Перед закрывающимся тэгом //символ строки будет устранен $bbcode->setCodeFlag ("list", "closetag.before.newline", BBCODE_NEWLINE_DROP); //В итоге мы можем использовать списки в bb-коде, //используя вместе теги list и *: // //[*] Элемент списка //[*] Элемент списка //[*] и т.д. // //Активируем обработку параграфов $bbcode->setRootParagraphHandling (true); //Как я понял, таким образом указывается, //какими символами нужно заменять встреченный //перенос строки внутри абзаца //(по сути, как обрабатывать пустые абзацы). $bbcode->setParagraphHandlingParameters ("\n", ""); $res_text = "Тестовый текст [b]для проверки работы класса"; //На всякий случай удаляем все оставшиеся //символы переноса строки в виде "\r", //если такие остались в тексте $res_text = str_replace("\r", "", $res_text); //Вуаля! echo $bbcode->parse($res_text);

    Послесловие

    Я, конечно же, не сделал полный перевод документации, а только самый необходимый минимум, за более подробной документацией вы можете обратиться на официальный сайт (вообще, там описано куда больше различных возможностей).

    Эту библиотеку также не составляет труда внедрить в какой-либо php фреймворк, я, к примеру, с успехом проделывал это для cackePHP.

    Если вы тоже встречали подобные библиотеки (корректно работающие с абзацам! 🙂) , интересно было бы узнать о них.

    Вступление

    Что такое 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 писал(а):». Помните, необходимо заключить имя в кавычки (""), они не могут быть опущены.

    • Второй метод просто позволяет вам процитировать что-либо. Для этого поместите текст между тегами . При просмотре сообщения этот текст будет находиться в блоке цитирования.
    Вывод кода или форматированного текста Если вам надо вывести часть кода программы или еще что-нибудь, что должно быть отображено шрифтом фиксированной ширины (Courier), то заключите текст в теги . Пример:

    echo "Это код программы";

    Все форматирование, используемое внутри тегов , будет сохранено. Подсветку синтаксиса кода PHP можно произвести с помощью тега и рекомендуется при размещении сообщений, содержащих фрагменты кодов PHP.

    Создание списков

    Создание маркированного списка BBCode поддерживает два вида списков: маркированные и нумерованные. Они практически идентичны своим эквивалентам из HTML. В маркированном списке все элементы выводятся последовательно, каждый отмечается символом-маркером. Для создания маркированного списка используйте теги и определяйте каждый элемент списка при помощи [*] . Например, для вывода своих любимых цветов вы можете использовать:


    [*] Красный
    [*] Синий
    [*] Желтый

    Это выдаст такой список:

    • Красный
    • Синий
    • Желтый
    Создание нумерованного списка Второй тип списка - нумерованный, позволяет выбрать, что именно будет выводиться перед каждым элементом. Для создания нумерованного списка используйте теги , или для создания алфавитного списка. Как и в случае маркированного списка, элементы списка определяются с помощью [*] . Пример:


    [*] Пойти в магазин
    [*] Купить новый компьютер
    [*]

    выдаст следующее:

    1. Пойти в магазин
    2. Купить новый компьютер
    3. Обругать компьютер, когда случится ошибка
    Для алфавитного списка используйте следующее:


    [*] Первый возможный ответ
    [*] Второй возможный ответ
    [*] Третий возможный ответ

    что выдаст

    1. Первый возможный ответ
    2. Второй возможный ответ
    3. Третий возможный ответ

    Создание ссылок

    Ссылки на другой сайт phpBB поддерживает несколько способов создания ссылок, также известных под названием URL.
    Как и со всеми прочими тегами BBCode, вы можете заключать в ссылки любые другие теги. Например, (см. следующий пункт), [b] и т.п. Как и с тегами форматирования, правильная вложенность тегов зависит от вас. Например следующая запись:

    http://www.teosofia.ru/my-picture.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

    Форматирование параграфов и областей:

    Привет! В этом абзаце первое предложение будет с "красной" строки, т.е. с отступом. Прямо как в книгопечати. Правда, в Интернете это редкая практика. Абзацы должны разделяться просто пустым промежутком.

    Преформатированый текст сохраняет отступы слева и между словами и устанавливает те отступы, что вы укажите пробелами. Предупреждение! Тэг не делает переноса строки автоматом!

    Форматирование списков

    Используем тэг или для маркированных списков:

    • Один из пунктов списка
    • Другой такой пункт
    • Ещё один пункт.



    [*] Другой такой пункт
    [*] Ещё один пункт.

    Для пронумерованных списков используем тэг :

    1. Один из пунктов списка
    2. Другой такой пункт
    3. Ещё один пункт.


    [*] Один из пунктов списка
    [*] Другой такой пункт
    [*] Ещё один пункт.

    Закрывающий тэг не обязателен для использования:

    • Один из пунктов списка
    • Другой такой пункт
    • Ещё один пункт.


    [*] Один из пунктов списка
    [*] Другой такой пункт
    [*] Ещё один пункт.

    Также возможно прямое указания вида списка:
    — пронумерованный список
    — алфавитный список
    — список, пронумерованный римскими цифрами

    Картинки

    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? 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 писал(а):». Помните, вы должны заключить имя в кавычки "", они не могут быть опущены.

    • Второй метод просто позволяет вам что-то процитировать. Для этого вам надо заключить текст в теги . При просмотре сообщения будет просто показан текст в блоке цитирования.
    Вывод кода или форматированного текста Если вам надо вывести кусок программы или что-то, что должно быть выведено шрифтом фиксированной ширины (Courier), вы должны заключить текст в теги , например:

    echo "This is some code";

    Всё форматирование, используемое внутри тегов , будет сохранено. Подсветка синтаксиса языка PHP может быть включена с помощью и рекомендуется при отправке сообщений с PHP-кодом для улучшения его удобочитаемости.

    Создание списков

    Создание маркированного списка BBCode поддерживает два вида списков: маркированные и нумерованные. Они практически идентичны своим эквивалентам из HTML. В маркированном списке все элементы выводятся последовательно, каждый отмечается символом-маркером. Для создания маркированного списка используйте и определите каждый элемент при помощи [*] . Например, чтобы вывести свои любимые цвета, вы можете использовать:


    [*] Красный
    [*] Синий
    [*] Жёлтый

    Это выдаст такой список:

    • Красный
    • Синий
    • Жёлтый
    Создание нумерованного списка Второй тип списка, нумерованный, позволяет выбрать, что именно будет выводиться перед каждым элементом. Для создания нумерованного списка используйте или для создания алфавитного списка. Как и в случае маркированного списка, элементы определяются с помощью [*] . Например:


    [*] Пойти в магазин
    [*] Купить новый компьютер
    [*]

    выдаст следующее:

    1. Пойти в магазин
    2. Купить новый компьютер
    3. Обругать компьютер, когда случится ошибка
    Для алфавитного списка используйте:


    [*] Первый возможный ответ
    [*] Второй возможный ответ
    [*] Третий возможный ответ

    что выдаст

    1. Первый возможный ответ
    2. Второй возможный ответ
    3. Третий возможный ответ

    Создание ссылок

    Ссылки на другой сайт В 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] , или просто ввести [email protected] в ваше сообщение, и он будет автоматически преобразован при просмотре.

    Как и со всеми прочими тегами BBCode, вы можете заключать в URL"ы любые другие теги, например (см. следующий пункт), [b] и т. д. Как и с тегами форматирования, правильная вложенность тегов зависит от вас, например:

    http://www.google.com/intl/en_ALL/images/logo.gif

    неверно , что может привести к последующему удалению вашего сообщения, так что будьте аккуратнее.