Модний чоловік faq php mode bbcode. Примітки щодо використання BB-кодів (bbCode). Форматування параграфів і областей
форматування тексту
Як написати жирний, виділений курсивом чи підкреслений BBCode включає теги для швидкої зміни стилю шрифту, зробити це можна наступними способами:- Щоб зробити текст жирним, укладіть його в [B], Наприклад:
[B]вітаю
стане вітаю
- Для підкреслення використовуйте [U], Наприклад:
[U]добрий ранок
стане Доброго ранку
- Курсив робиться тегами [I], Наприклад:
це [I]здорово!
видасть Це здорово!
- Колір тексту можна змінити, оточивши його
. Ви можете вказати або відоме ім'я кольору (red, blue, yellow і т. П.), Або шістнадцяткове подання, наприклад #FFFFFF, # 000000. Таким чином, для створення червоного тексту ви можете використовувати:
Вітаю!
Вітаю!
обидва способи дадуть в результаті Привіт!
- Зміна розміру досягається аналогічним чином при використанні
. Цей тег залежить від використовуваних шаблонів, рекомендований формат - число, що показує розмір тексту у відсотках, від 20% (дуже маленький) до 200% (дуже великий) від розміру за замовчуванням. наприклад:
МАЛЕНЬКИЙ
швидше за все буде МАЛЕНЬКИЙ
в той час як:
ВЕЛИЧЕЗНИЙ!
буде ВЕЛИЧЕЗНИЙ!
[B]ПОДИВІТЬСЯ НА МЕНЕ!
що видасть ПОДИВІТЬСЯ НА МЕНЕ!
[B] [u]Це не вірно
Цитування та виведення тексту фіксованої величини
Цитування при відповідях Є два способи процитувати текст, з посиланням та без.- Коли ви використовуєте кнопку «Цитата» для відповіді на повідомлення, то його текст додається в поле введення оточеним блоком
. Цей метод дозволить вам цитувати з посиланням на автора або на щось ще, що ви туди впишете. Наприклад, для цитування уривка тексту, написаного Mr. Blobby, ви напишете:
Текст Mr. Blobby буде тут
В результаті перед текстом будуть вставлені слова «Mr. Blobby писал (а): ». Пам'ятайте, ви повинні укласти ім'я в лапки "", вони не можуть бути опущені.
- Другий метод просто дозволяє вам щось процитувати. Для цього вам треба укласти текст в теги . При перегляді повідомлення буде просто показаний текст в блоці цитування.
echo "This is some code";
Все форматування, що використовується всередині тегів , Буде збережено. Підсвічування синтаксису мови PHP може бути включена за допомогою і рекомендується при відправці повідомлень з PHP-кодом для поліпшення його удобочитаемости.
створення списків
Створення маркованого списку BBCode підтримує два види списків: марковані й нумеровані. Вони практично ідентичні своїм еквівалентів з HTML. У маркірованих списках всі елементи виводяться послідовно, кожен відзначається символом-маркером. Для створення маркованого списку використовуйте і визначте кожен елемент за допомогою [*] . Наприклад, щоб вивести свої улюблені кольори, ви можете використовувати:
[*]
червоний
[*]
синій
[*]
жовтий
Це видасть такий список:
- червоний
- синій
- жовтий
[*]
Піти в магазин
[*]
Купити новий комп'ютер
[*]
видасть наступне:
- Піти в магазин
- Купити новий комп'ютер
- Вилаяти комп'ютер, коли трапиться помилка
[*]
Перша можлива відповідь
[*]
Друга можлива відповідь
[*]
Третя можлива відповідь
що видасть
- Перша можлива відповідь
- Друга можлива відповідь
- Третя можлива відповідь
створення посилань
Посилання на інший сайт В BBCode підтримується кілька способів створення URL "ов.- Перший з них використовує тег
, Після знака \u003d повинен йти потрібний URL. Наприклад, для посилання на phpBB.com ви могли б використовувати:
Відвідайте phpBB!
- Якщо ви хочете, щоб в якості тексту посилання показувався сам URL, ви можете просто зробити наступне:
http://www.phpbb.com/
- Крім того, phpBB підтримує можливість, яка називається автоматичні посилання, Це переведе будь-синтаксично правильний URL в посилання без необхідності вказівки тегів і навіть префікса http: //. Наприклад, введення www.phpbb.com в ваше повідомлення призведе до автоматичної видачі www.phpbb.com при перегляді повідомлення.
- Те ж саме відноситься і до адрес email, ви можете або вказати адресу в явному вигляді:
що видасть [email protected], або просто ввести [email protected] в ваше повідомлення, і він буде автоматично перетворено при перегляді.
http://www.google.com/intl/en_ALL/images/logo.gif
невірно, що може привести до подальшого видалення вашого повідомлення, так що будьте акуратніше.
Вступ
bbCode - Bulletin Board Code, або мова розмітки, яка використовується для форматування повідомлень на багатьох електронних дошках оголошень (BBS) і форумах. Для форматування тексту використовуються теги, подібні тегам HTML. На відміну від тегів HTML, теги bbCode укладають у квадратні дужки. Перед відображенням сторінки движок форуму виробляє розбір тексту і перетворює bbCode в HTML-код.
На багатьох форумах можливість використання BB-кодів встановлюється адміністратором на основі розділ форуму. Тому, перш ніж використовувати BB-коди в повідомленнях, необхідно переконатися, що вони дозволені.
форматування шрифту
Базові теги для роботи з текстом:
[P] Звичайний абзац з відступом.
Абзац, якому можна задавати стиль. текст
* Тут і далі «стиль» - це аналог style в HTML.
текст аналогічно в HTML
** З тегами [p] можна використовувати інші теги, такі як [b], [i], [s] і т.д.
Текст, якому за допомогою стилю можна змінювати властивості.
Обмежена область, якої за допомогою стилю можна змінювати властивості (положення, межі, відступи, властивості вмісту і т.д.).
* За замовчуванням кордону областей не видно. На одній сторінці може бути відразу кілька областей.
Форматування тексту:
[B] Важливий текст, напівжирний
[I] Важливий текст, курсив
просто напівжирний
просто курсив
[U] підкреслений текст
[S] Закреслений текст - аналогічно варіанту
зменшений шрифт
Знак виноски зверху або індекс знизу від тексту
віддалений текст
Розміри шрифту:
Шрифт розміром 13 пунктів
Шрифт розміром 15 пунктів
Шрифт розміром 9 пікселів
Шрифт розміром 12 пікселів
Шрифт розміром 15 пікселів
Розмір 0
Розмір +1
Розмір +2
Можливі варіанти розмірів шрифтів (візуальна оцінка) доступні.
заголовки:
Тема 1-го рівня
Тема 2-го рівня
Тема 3-го рівня
Тема 4-го рівня
Тема 5-го рівня
Тема 6-го рівня
Оформлення тексту за допомогою шрифтів:
Шрифт Comic Sans Ms
Шрифт Monotype Corsiva
шрифт Tahoma
Можливі варіанти типів шрифтів (найменування та візуальна оцінка) доступні.
Оформлення тексту за допомогою кольору:
червоний текст
* Можна користуватися стандартними словесними позначеннями кольорів: Red, Green, Blue і т.д.
синій текст
* Цифра # 0000ff означає синій колір в RGB палітрі.
блакитний фон
* У фону теж можна міняти колір.
Синій текст, сірий фон
Деякі зумовлені кольору:
Black White Red Green Blue Purple Firebrick Maroon OrangeRed MidnightBlue CornflowerBlue
Cyan Yellow Magenta DarkGreen DarkGoldenrod Gold Orchid BlueViolet Burlywood PeachPuff
Деякі кольори в шестнадцатиричном коді - інтенсивність червоного, зеленого і синього (RR GG BB):
# 000000 #FFFFFF # FF0000 # 00FF00 # 0000FF # FF00FF # FF4444 # FF9999 #FFCCCC # 9999FF # FF99FF #DDDDDD # FFE4C4 # CCCC99 # FF8DC # FA8072 # 990000 # FF3030 # 000080 # 000066 # 0000CD #AFEEEE # 006400 # 66FF00 # 00B800 # DAA520 # FFCC33 # FFA500 # C71585 # 8B008B # CC33FF
Можливі варіанти палітри кольорів і їх кодів / найменувань доступні.
Вирівнювання тексту та форматування параграфів
Вирівнювання тексту:
Вирівнювання тексту по лівій стороні
Вирівнювання по лівій стороні зі стилем
Вирівнювання в абзаці вліво
Вирівнювання тексту по центру
Вирівнювання по центру зі стилем
Вирівнювання в абзаці по центру
Вирівнювання тексту по правій стороні
Вирівняний по правій стороні зі стилем
Вирівнювання в абзаці справа
Вирівнювання тексту по обидва боки
Вирівнювання по обидва боки зі стилем
Вирівнювання в абзаці по обидва боки
* Вирівнювання текстів по обидва боки відображається для текстів, що мають довжину більше одного рядка.
Оформлення виносок (коментарів) з відступом абзацу:
[Q] Цитата в рядку
Цитата в рядку з властивостями
Процитований в окремому блоці текст, у якого буде
невеликий відступ зліва і особливе оформлення (стиль форуму).
приклади:
Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet
Форматування параграфів і областей:
Вітаю! У цьому абзаці перше речення буде з "червоної" рядка, тобто з відступом. Прямо як в кнігопечаті. Правда, в Інтернеті це рідкісна практика. Абзаци повинні розділятися просто порожнім проміжком.
Преформатірований текст зберігає відступи зліва і між словами і встановлює ті відступи, що ви вкажете пробілами. Попередження! Тег робить розриву рядків автоматом!форматування списків
Використовуємо тег або для маркованих списків:
- Один з пунктів списку
- Іншої такої пункт
- Ще один пункт.
[*] Інший такий пункт
[*] Ще один пункт.
Для пронумерованих списків використовуємо тег:
- Один з пунктів списку
- Іншої такої пункт
- Ще один пункт.
[*] Один з пунктів списку
[*] Інший такий пункт
[*] Ще один пункт.
Закриває тег не обов'язковий для використання:
- Один з пунктів списку
- Іншої такої пункт
- Ще один пункт.
[*] Один з пунктів списку
[*] Інший такий пункт
[*] Ще один пункт.
Також можливе пряме зазначення виду списку:
- пронумерований список
- алфавітний список
- список, пронумерований римськими цифрами
картинки
Http://img.cx/img/primer.jpg - приклад вставки картинки.
Http://img.cx/img/primer.jpg - картинка зліва.
Http://img.cx/img/primer.jpg - картинка праворуч.
* Даний код аналогічний коду в HTML:
Http://img.cx/img/primer.jpg - картинка по центру.
* Даний код аналогічний коду в HTML:
Аналогічні теги з назвами і спливаючі підказки:
Важливо! У назві картинки не можна використовувати лапки!
Http://img.cx/img/primer.jpg - приклад вставки картинки.
Http://img.cx/img/primer.jpg - картинка зліва.
Http://img.cx/img/primer.jpg - картинка праворуч.
Http://img.cx/img/primer.jpg - картинка по центру.
Картинки із зазначеними розмірами:
Http://img.cx/img/primer.jpg - приклад картинки з розміром.
* Даний код аналогічний коду в HTML:
Http://img.cx/img/primer.jpg - картинка зліва, з розміром.
Http://img.cx/img/primer.jpg - картинка праворуч, з розміром.
Вставка великих зображень з смугами прокрутки:
Http: //www..jpg - картинка в виділеної області, якщо вона більше доступного розміру відображення на форумі.
Адреса - відкрити зображення в новому вікні.
* Даний код аналогічний коду в HTML:
Адреса - відкрити зображення в тому ж вікні.
* Даний код аналогічний коду в HTML:
У мене періодично з'являється потреба у використанні «інтерпретатора» BBCode в своїх проектах (написаного на PHP), і постійно немає часу шукати якесь більш-менш легкотравне рішення, що в підсумку виливається в використання або створення «милиць» для кожного конкретного випадку.
Але ось, схоже, вдалося виявити те, що хотілося.
Моя претензія до подібних готових рішень зазвичай в першу чергу полягає в нездатності цих бібліотек правильно обробляти абзаци. Фактично вони зазвичай взагалі не використовують абзаци (тег P), Натомість в результаті своєї роботи вони просто вставляють тег
, Замінюючи звичайні символи розриву рядків. Я вважаю такий метод емулювання абзаців в 98 відсотках, м'яко кажучи, не доречним. Але так як перенесення рядків за коштами
набагато легше реалізувати замість «людських»
, Так більшість і робить 🙁 Деякі навіть придумують виправдання, що мовляв з br навіть правильніше, почасти, через подібну ліні розробників різних готових бібліотек, інша частина людей думає, що тег P є застарілим (адже навіть у багатьох готових продуктах і сайтах абзаци формуються шляхом використання
) 🙂
приступимо
Але, здається, є світло в кінці тунелю. Це готовий клас для роботи з BBCode, який, судячи з усього, відмінно справляється зі своїм завданням (нічого кращого поки не бачив). Єдиний мінус у тому, що документація, представлена \u200b\u200bна сайті, не російською мовою. Цей мінус я і хочу побороти в цій статті, навівши приклад використання класу з російськими коментарями.
Для початку потрібно скачати бібліотеку (на момент написання статті версія бібліотеки була 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", , array ( "start_tag" \u003d\u003e " "," End_tag \u200b\u200b"\u003d\u003e"")," Inline ", array (" block "," inline "), array ()); // Обробляємо тестовий рядок і виводимо її в браузер echo $ bbcode-\u003e parse (" Тестовий текст, це слово має бути [b ] жирним ");?\u003e
функція 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') Вказівка \u200b\u200bтого, як тег повинен оброблятися (якого він типу). Є різні зумовлені типи тегів, які будуть описані нижче. У нашому ж прикладі зазначений тип 'simple_replace' який вказує на те, що тег буде парним (відкривається тег [b] і закривається) і що ці теги будуть замінені на такі html теги. $ Callback (в прикладі має значення null) Дозволяє вказати ім'я функції, яка повинна буде викликатися при обробці знайденого тега в тексті. У випадку з типом тега 'simple_replace' така функція не викликається, і, відповідно, в цьому параметрі можна вказати null. $ Params (в прикладі має значення array ( 'start_tag' \u003d\u003e ' ',' End_tag \u200b\u200b'\u003d\u003e'')) У цьому параметрі в основному вказується, який потрібно вставляти 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-\u003e addCode (..., array ( 'usecontent_param' \u003d\u003e 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 \u003d\u003d "validate") (if (substr ($ content, 0, 5) \u003d\u003d "data:" || substr ($ content, 0, 5) \u003d\u003d "file:" || substr ($ content, 0 , 11) \u003d\u003d "javascript:" || substr ($ content, 0, 4) \u003d\u003d "jar:") (return false;) return true;) // Безпосереднє перетворення тега в // html варіант з поверненням результату return " ";) // Створюємо об'єкт класу StringParser_BBCode $ bbcode \u003d new StringParser_BBCode (); // Додаємо фільтр (докладніше див. Офф. Документацію), // задіюючи нашу функцію convertlinebreaks, яка буде // перетворювати переклади рядка в тексті до єдиного $ bbcode -\u003e addFilter (STRINGPARSER_FILTER_PRE, "convertlinebreaks"); // Додаємо свої парсери для різних типів об'єктів // (докладніше див. офф. документацію) // Ми вказуємо, через яку функцію має пройти // вміст цих тегів, наприклад, через функцію // htmlspecialchars для запобігання XSS і т.д. $ bbcode-\u003e addParser (array ( "block", "inline", "link", "listitem"), "htmlspecialchars"); $ bbcode-\u003e addParser (array ( " block "," inline "," link ", "Listitem"), "nl2br"); $ bbcode-\u003e addParser ( "list", "bbcode_stripcontents"); // Додаємо bb-код, який використовується у вигляді: // Текст заголовка першого рівня $ bbcode-\u003e addCode ( "h1 "," simple_replace ", , array (" start_tag "\u003d\u003e" "," End_tag \u200b\u200b"\u003d\u003e"
")," Block ", array (" listitem "," block "," link "), array ()); // Додаємо bb-код, який використовується у вигляді: // Текст заголовка другого рівня $ bbcode-\u003e addCode ( "h2", "simple_replace", , array ( "start_tag" \u003d\u003e " "," End_tag \u200b\u200b"\u003d\u003e"
")," Block ", array (" listitem "," block "," link "), array ()); // Додаємо bb-код, який використовується у вигляді: // Текст заголовка третього рівня $ bbcode-\u003e addCode ( "h3", "simple_replace", , array ( "start_tag" \u003d\u003e " "," End_tag \u200b\u200b"\u003d\u003e"
")," Block ", array (" listitem "," block "," link "), array ()); // Додаємо bb-код, який використовується у вигляді: // Текст заголовка четвертого рівня $ bbcode-\u003e addCode ( "h4", "simple_replace", , array ( "start_tag" \u003d\u003e " "," End_tag \u200b\u200b"\u003d\u003e"
")," Block ", array (" listitem "," block "," link "), array ()); // Додаємо bb-код, який використовується у вигляді: // Текст заголовка п'ятого рівня $ bbcode-\u003e addCode ( "h5", "simple_replace", , array ( "start_tag" \u003d\u003e " "," End_tag \u200b\u200b"\u003d\u003e"
")," Block ", array (" listitem "," block "," link "), array ()); // Додаємо bb-код, який використовується у вигляді: // Текст заголовка шостого рівня $ bbcode-\u003e addCode ( "h6", "simple_replace", , array ( "start_tag" \u003d\u003e " "," End_tag \u200b\u200b"\u003d\u003e"
")," Block ", array (" listitem "," block "," link "), array ()); // Встановлюємо прапори для bb-кодів з h1 до h6, // вказуючи, що вони є блоковими елементами, // що буде в подальшому благотворно впливати на розумну // генерацію html коду. Такий елемент, наприклад, не зможе // перебувати всередині інших блочних елементів $ bbcode-\u003e setCodeFlag ( "h1", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $ bbcode -\u003e setCodeFlag ( "h2", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $ bbcode-\u003e setCodeFlag ( "h3", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $ bbcode-\u003e setCodeFlag ( "h4", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $ bbcode-\u003e setCodeFlag ( "h5", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); $ bbcode-\u003e setCodeFlag ( "h6", "paragraph_type", BBCODE_PARAGRAPH_BLOCK_ELEMENT); // Додаємо bb- од [b], який використовується у вигляді: // [b] виділений текст $ bbcode-\u003e addCode ( "b", "simple_replace", , array ( "start_tag" \u003d\u003e " "," End_tag \u200b\u200b"\u003d\u003e"")," Inline ", array (" listitem "," block "," inline "," link "), array ()); // Додаємо bb-код [i], який використовується у вигляді: // [i] курсив $ bbcode-\u003e addCode ( "i", "simple_replace", , array ( "start_tag" \u003d\u003e " "," End_tag \u200b\u200b"\u003d\u003e"")," Inline ", array (" listitem "," block "," inline "," link "), array ()); // Додаємо bb-код, який використовується у вигляді: // http: // www. needsite.domain і // Текст посилання $ bbcode-\u003e addCode ( "url", "usecontent?", "do_bbcode_url", array ( "usecontent_param" \u003d\u003e "default"), "link", array ( "listitem", " block "," inline "), array (" link ")); // Додаємо bb-код, який використовується у вигляді: //http://www.needsite.domain $ bbcode-\u003e addCode (" link "," callback_replace_single "," do_bbcode_url ", array ()," link ", array (" listitem "," block "," inline "), array (" link ")); // Додаємо bb-код, який використовується у вигляді: // http: //www.needsite.domain/img.jpg $ bbcode-\u003e addCode ( "img", "usecontent", "do_bbcode_img", array (), "image", array ( "listitem", "block", " inline "," link "), array ()); // Додаємо bb-код (за змістом те ж саме, // що і), який використовується у вигляді: //http://www.needsite. domain / img.jpg $ bbcode-\u003e addCode ( "bild", "usecontent", "do_bbcode_img", array (), "image", array ( "listitem", "block", "inline", "link"), array ()); // Створюємо групу image з bb-кодів img і bild // для подальшої можливості завдання // деяких правил для цих груп $ bbcode-\u003e setOccurrenceType ( "img", "image"); $ Bbcode-\u003e setOccurrenceType ( "bild", "image"); // Вказуємо, що теги з групи image // можуть зустрічатися (оброблятися) в оглядi не бiльше // двох разів. У нашому випадку це потрібно для того, // щоб користувач не міг вставити більше двох // картинок в текст повідомлення $ bbcode-\u003e setMaxOccurrences ( "image", 2); // Додаємо bb-код $ bbcode-\u003e addCode ( "list", "simple_replace", , array ( "start_tag" \u003d\u003e " "," End_tag \u200b\u200b"\u003d\u003e"
")," List ", array (" block "," listitem "), array ()); // Додаємо bb-код [*], вказуючи, що цей тег // може використовуватися тільки усередині тега // з типом list (цей тип ми присвоїли вище тегом) $ bbcode-\u003e addCode ( "*", "simple_replace", , array ( "start_tag" \u003d\u003e "
Післямова
Я, звичайно ж, не зробив повний переклад документації, а тільки найнеобхідніший мінімум, за більш докладною документацією ви можете звернутися на офіційний сайт (взагалі, там описано куди більше різних можливостей).
Цю бібліотеку також не складає труднощів впровадити в будь-якої 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 писал (а): ». Пам'ятайте, необхідно укласти ім'я в лапки ( ""), вони не можуть бути опущені.
- Другий метод просто дозволяє вам процитувати що-небудь. Для цього помістіть текст між тегами . При перегляді повідомлення цей текст буде знаходитися в блоці цитування.
echo "Це код програми";
Все форматування, що використовується всередині тегів , Буде збережено. Підсвічування синтаксису коду PHP можна зробити за допомогою тега і рекомендується при розміщенні повідомлень, що містять фрагменти кодів PHP.
створення списків
Створення маркованого списку BBCode підтримує два види списків: марковані й нумеровані. Вони практично ідентичні своїм еквівалентів з HTML. У маркірованих списках всі елементи виводяться послідовно, кожен відзначається символом-маркером. Для створення маркованого списку використовуйте теги і визначайте кожен елемент списку за допомогою [*] . Наприклад, для виведення своїх улюблених квітів ви можете використовувати:
[*]
червоний
[*]
синій
[*]
жовтий
Це видасть такий список:
- червоний
- синій
- жовтий
[*]
Піти в магазин
[*]
Купити новий комп'ютер
[*]
видасть наступне:
- Піти в магазин
- Купити новий комп'ютер
- Вилаяти комп'ютер, коли трапиться помилка
[*]
Перша можлива відповідь
[*]
Друга можлива відповідь
[*]
Третя можлива відповідь
що видасть
- Перша можлива відповідь
- Друга можлива відповідь
- Третя можлива відповідь
створення посилань
Посилання на інший сайт phpBB підтримує декілька способів створення посилань, також відомих під назвою URL.- Перший з них використовує тег
. Після знака \u003d повинен вставлятися потрібну адресу URL. Наприклад, для створення посилання на сайт phpBB.com ви могли б використовувати:
В кінцевому вигляді такої код буде виглядати так: Відвідайте сайт www.teosofia.ru! Посилання буде відкриватися в тому ж або в новому вікні, в залежності від налаштувань браузера користувача.
- Якщо ви хочете, щоб в якості тексту посилання показувався URL, то ви можете просто зробити наступне:
http://www.teosofia.ru/
- Крім цього в phpBB впроваджена функція, звана автоматичні посилання. Ця функція перетворює будь-який синтаксично правильний URL в посилання без необхідності вказівки тегів і префікса http: //. Наприклад, введення в повідомлення фрази www.teosofia.ru призведе при перегляді цього повідомлення до автоматичної видачі www.teosofia.ru.
- Те ж саме відноситься і до адресами електронної пошти: ви можете вказати адресу в явному вигляді:
що видасть [email protected] або просто ввести адресу [email protected] в повідомлення, і він буде автоматично перетворено при перегляді цього повідомлення.
http://www.teosofia.ru/my-picture.gif
не є коректною, що може привести до подальшого видалення вашого повідомлення. Будьте уважнішими.