Цитирование и вывод форматированных текстов

Вступление

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

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

http://phpbbex.com/logo.svg?5

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

Показ изображений в сообщениях

Добавление изображения в сообщение BBCode включает тег для добавления картинки в ваше сообщение. При этом следует помнить две очень важные вещи: во-первых, многих пользователей раздражает большое количество изображений, во-вторых, ваше изображение уже должно быть размещено в интернете (т. е. оно не может быть расположено только на вашем компьютере, если, конечно, вы не запустили на нём веб-сервер!). На данный момент нет возможности хранить изображения локально на phpBB (ожидается, что это ограничение будет снято в следующей версии phpBB). Для вывода изображения вы должны окружить его URL тегами . Например:

http://phpbbex.com/logo.svg?5

Как указано в предыдущем пункте, вы можете заключить изображение в теги , то есть

http://phpbbex.com/logo.svg?5

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

Цитирование и вывод форматированных текстов

Цитирование при ответах Есть два способа процитировать текст, со ссылкой и без.
  • Когда вы используете кнопку «Цитата» для ответа на сообщение, то его текст добавляется в поле ввода окружённым блоком . Этот метод позволит вам цитировать со ссылкой на автора либо на что-то ещё, что вы туда впишете. Например, для цитирования отрывка текста, написанного Mr. Blobby, вы напишете:

    Текст Mr. Blobby будет здесь

    В результате перед текстом будут вставлены слова «Mr. Blobby писал(а):». Помните, вы должны заключить имя в кавычки "", они не могут быть опущены.

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

echo "This is some code";

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

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

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


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

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

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


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

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

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


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

что выдаст

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

У меня периодически появляется потребность в использовании «интерпретатора» 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.

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

    Перейти: Выберите форум Планирование беременности. Берем... Хочу ребенка! Планирование берем... Планирующие болтушки Хочушки - затейницы Дневники планирования беременности Беременность Болтушки беременных Выбор имени ребенку Архив раздела Беременность Здоровье будущей мамы и ребенка Роды и роддома Поздравления с рождением Обсуждение роддомов Домашние роды Дети - уход за детьми, питание и... Уход за ребенком О еде. Все о детском питании Разговоры о товарах для детей -... Грудное вскармливание Уход за ребенком. Архив форума Архив форума Товары для детей Детское здоровье и медицина для... Вакцинация Другие дети Детская стоматология Аллергология, дерматология, имм... Обсуждение лечебных учреждений... Наши малыши. Общение ровесников... Клуб двойняшек, тройняшек и так... Земельный вопрос Многодетные сибмамы Воспитание детей. Семейные отнош... Развитие и обучение детей Поделки - мастерим с детьми Детские книги, фильмы, аудиосказки Кружки, клубы и обучающие центры Куда сходить с ребенком. Детски... Детские сады и няни Детские сады Новосибирска: адре... Спорт для детей Школа и школьники. Вузы и ссузы,... Семейное образование. Экстернат Школы и гимназии Новосибирска и... Архив школьного раздела Приемные дети. Усыновление. Опек... Форум для обсуждения личных ист... Подростки. Дети и пубертат Дом и семья Все о недвижимости. Дома, кварт... Ремонт и интерьер Строительство домов, гаражей, ба... Дачное общество Сибмама. Огор... Дачный базар. Товары для дачи, ... Сад и огород (семена, рассада, ... Сады Сибири - авторские темы Наш цветник Обсуждаем дачные места - садовы... Архив дачного форума Домашнее хозяйство Все о праздниках и подарках Новый год!!! Все о подготовке к... Покупки для дома Домашнее хозяйство. Архив форума Архив форума Новый год Свадебный форум Свадебные объявления (ДО) Кулинарный форум Кулинарные флешмобы Кондитерская, пекарня Заготовки - соленья, варенья, м... В магазин за едой Кухонная утварь - посуда и техника Архив кулинарии Хобби. Коллекционеры. Настольные... Клуб любителей кукол Kinder-story - коллекционирован... Животные Кошки Собаки Объявления. Животные. Покупка, ... Помощь животным Архив форума о домашних животных Цветы и домашние растения Цветочный рынок. Объявления по... Фиалки, сенполии, глоксинии и к... Фотоцветник Архив цветочного форума Рукоделие Шитье - техники, выкройки, обсу... Вязание спицами и крючком - схе... Вышивка Хвастушки рукодельниц Оборудование для рукоделия Скрапбукинг, декупаж, квилинг Пэчворк, квилтинг,- лоскутное ш... Архив раздела Рукоделие Товары для рукоделия (ДО) Объяв... Жизнь семейная Сибпапа О сексе (18+) Фотофорум. Все о фото Автомобильный форум Архив автофорума Путешествия и туризм. Отели и са... Россия и страны ближнего зарубе... Сибирь и Алтай. Активный отдых... Турция - Анталия, Мармарис, Ста... ЮВА - Тайланд, Вьетнам, Китай, ... ДО раздела Путешествия. Жилье, ... Красота и уход. Мода и стиль. Зд... Уход за телом и лицом. Косметоло... Уход за волосами. Прически Будь в форме! Спорт и фитнес. Пл... Лечение и здоровье взрослых. Мед... Мода и Стиль. Обсуждение тенденций Удачная покупка Клуб любителей парфюма Парфюмерные распивы Общий архив красоты Работа. Отдых. Общие вопросы Обо всем Сегодня в мире Как страшно жить Правовой ликбез Банки и финансы Работа и обучение. Для взрослых Свой бизнес. Форум для бизнес-леди Предложения о покупке\продаже б... О вере Культурная жизнь Наука и жизнь Развлечения. Юмор, анекдоты. Иг... Познай себя: духовные и телесные... Жизнь Сибмамы Обсуждение сайта и форума Клуб Сибмама. Скидки в Новосибир... Тест-драйв Сибмамы Место встречи Конкурсы Цитатник Архив форумов Сибмама Архив форума Место встречи Архив опросов Зеленый форум. Архив Гаджеты. Архив Благотворительное родительско... Сбор помощи заболевшим детям Маме нужна помощь Архив благотворительного форума Форумы для других городов и стран Иностранные мамы и те, кто готов... Сибмамы в Москве. Регионы Форум Красноярских мам и пап Форум Томских мам и пап Омские Сибмамы общаются здесь:) Форум Новокузнецких мам и пап Форум Кемеровских мам и пап Архив раздела Регионы Архив Омского раздела Сочи, Краснодар и другие южные... Барнаул и Алтайский край Барнаул и Алтайский край - разго... Стройка и ремонт в Барнауле и А... Домашнее хозяйство в Барнауле. ... Здоровье взрослых в Барнауле Барнаул Наши праздники Дамские штучки. Красота, уход, ... Туризм и путешествия Барнаульцев Барнаул. Животные и растения, ф... Культурная жизнь в Барнауле для... Архив Барнаульского раздела Беременность и роды в Барнауле Алтайские детки - все о воспитан... Детский спорт в Барнауле и Алта... Детские сады, школы, вузы, ссуз... Здоровье наших деток - Барнаул Архив. Алтайские детки Детские лагеря - летние, пришко... Доска объявлений г. Барнаул Барнаул. ДО Одежда и прочие тов... Барнаул ДО Обувь для детей Барнаул. ДО Детская одежда Барнаул. ДО Товары для детей Барнаул. ДО Обувь для взрослых Барнаул. ДО Одежда для взрослых Барнаул ДО Недвижимость Барнаул ДО. Продажа животных и... Барнаул. ДО Мебель и фурнитура Барнаул. ДО Работа и услуги ДО Красота и уход за телом в Ба... Барнаул. ДО Репетиторство, круж... Барнаул. Букинист - ДО Книги и... Отдам даром. Объявления в Барнауле ДО Куплю разное в Барнауле. Объ... Барнаульские совместные покупки... Барнаул. СП Одежда (взрослая и... Барнаул. СП Обувь, галантерея... Барнаул. СП Прочие товары Барнаул. уСПешная песочница СП в Бийске Совместные закупки Хобби-клуба... Барнаул. Коммерческие предложени... Новосибирская Доска объявлений Детские товары (ДО) в Новосибирске Одежда для малышей до года (до... Одежда для дошкольников (от 86 ... Товары для школьников (от 122 с... Обувь для школьников и подростк... Обувь для малышей и дошколят (д... Детский транспорт. Коляски и ав... Детская мебель (ДО) Товары для дома и семьи. (ДО) Одежда для взрослых (ДО) Товары для беременных и кормящи... Обувь для взрослых (ДО) Автомобильная ДО Хэнд-мэйд (ДО) - Ручная работа.... Мебель и крупногабаритные товар... Бытовая техника, компьютеры и т... Архив раздела Хэнд-мэйд (ДО) Работа и услуги (ДО) Услуги для детей. Объявления Фотоуслуги. Видео. Объявления Красота и уход (ДО) Помощь в обучении. Репетиторы (ДО) Пункт обмена и проката Отдам даром Недвижимость (ДО) Объявления по съему-сдаче недви... Шопинг-клуб Коммерческие предложения Всё для детей - уход, развитие,... Зарубежные покупки Сетевой маркетинг, MLM Продуктовая корзинка для вас и... Товары и услуги для дома, строи... СП - мания (Совместные закупки б... Архив СП-мании Фанаты шопинга - хвастушки и бол... Консультации специалистов Консультации врача гинеколога, д... Консультации врача-педиатра Мед... Консультации офтальмолога Консультации врача - ортодонта Семейный консультант. Психолог А... Копилка родительского опыта Консультации сексолога (18+) Консультации специалистов. Архив Консультации педиатра Консультации специалистов клиники Консультации Юриста Консультации специалиста по Мик... Консультации юриста Консультации врачей Центров сем... Консультации специалистов медиц... Консультация врача-гомеопата Экспертные консультации врачей... Консультации специалистов медиц... Консультации специалистов медиц... Консультации офтальмолога Игоря... Консультации детского офтальмол... Консультации детского уролога, ... Консультации специалистов по гр... Консультация взрослого невролога Консультации детского невролога... Консультация врача косметолога Консультации детского невролога Психолог Пётр Зарубин Консультации стоматолога Консультации инструкторов по ма... Психологи Александр и Катерина... Консультации детских специалист... Консультации врача-ортодонта

    В BBCode поддерживается несколько способов создания URL"ов.

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

    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:

    1. Go to the shops
    2. Buy a new computer
    3. Swear at computer when it crashes
    Whereas for an alphabetical list you would use:


    [*] The first possible answer
    [*] The second possible answer
    [*] The third possible answer

    1. The first possible answer
    2. The second possible answer
    3. 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.
    As with all the BBCode tags you can wrap URLs around any of the other tags such as (see next entry), [b] , etc. As with the formatting tags it is up to you to ensure the correct open and close order is following, for example:

    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