Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Использование парсера BBCode на PHP. Быстрый старт

Здесь описываются основы работы с библиотекой xBB – парсером BBCode.

Вывод текста

Класс, реализующий обработку ББКода, называется bbcode. Вот пример использования этого класса в PHP-коде:
 
PHP
$text = '[b]Переменная с текстом BBCode: [i]Hello world![/i][/b]';
// Подключаем библиотеку с классом
require_once 'ваш/путь/bbcode.lib.php';
// Создаем объект и распарсиваем $text
$bb = new bbcode($text);
// Конвертируем BBCode в HTML и выводим его
echo $bb -> get_html();

Все достаточно просто. При инициализации объекта ему передается текст, содержащий BBCode. Метод get_html возвращает текст HTML, конвертированный из BBCode. Следующий пример демонстрирует, как можно обработать последовательность текстов BBCode:
 
PHP
$list = array(
    'Первый текст с [b]ББКодом[/b]',
    'Второй текст с [i]ББКодом[/i]'
);
// Подключаем библиотеку с классом
require_once 'ваш/путь/bbcode.lib.php';
// Создаем объект
$bb = new bbcode;
// В цикле парсим ББКод и выводим HTML
foreach ($list as $val) {
    $bb -> parse($val);
    echo $bb -> get_html() . '<br />';
}

В этом примере текст BBCode обрабатывается не при инициализации объекта, а путем вызова специального метода parse.
 
Для работы со смайликами в классе bbcode предусмотрено свойство mnemonics, которое является массивом и должно содержать пары
 
'мнемоника' => 'ее замена'

Например: ':)' => '<img src="ulibka.gif" alt="Улыбка" />'
 
Если вас не устраивает набор смайликов, установленный по умолчанию, вы можете задать свой. Для этого сформируйте массив замен и положите его в mnemonics. Тогда ваши смайлики будут обрабатываться. Смайлики не будут вставляться в содержимое тегов [bbcode], [code], [nobb], [php] и т.п..
 
Пример PHP-кода, устанавливающего набор смайликов
$text = 'Переменная [b]BBCode[/b] со смайликами: :) :D';
// Формируем список смайликов:
$smiles = array(
    ':)' => '<img src="images/smilies/2.gif" alt="Well" />',
    ':D' => '<img src="images/smilies/1.gif" alt="Very we!" />'
);
// Подключаем библиотеку с классом
require_once 'ваш/путь/bbcode.lib.php';
// Создаем объект и парсим $text
$bb = new bbcode($text);
// Задаем набор смайликов
$bb -> mnemonics = $smiles;
// Конвертируем BBCode в HTML и выводим его
echo $bb -> get_html();

Более подробно о работе с библиотекой смотрите в разделе "API".

Теперь самое время подумать о том, чтобы дать пользователям какой нибудь редактор для работы с BBCode

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2010-12-13 03:58:23

Метки материала: php, bbcode, xbb, api, парсер, текст, bbcode.lib.php, скрипт bbcode, скрипты, программирование


114 комментариев

Последние десять комментариев:

24.12.2014 14:06:18 #
Google Chrome Гость Tutanhamon
Неплохая статья. Вообще, bbcode имеет свои плюсы по сравнению с чистым html. С ним технически намного проще обращаться. Однако, bbcode накладывает и свои ограничения, включая процесс редактирования. Если необходимо разместить статью или объявление на html, то, обычно, возникает одна муторная проблема - необходимость в кропотливой замене скобочек на "<>". Конечно, данную проблему можно обойти, с помощью онлайн конвертера
Но, это не всегда удобно. Любой добавленный специфический тег в набор - автоматически добавляет сложностей и необходимость ручной замены символов.
26.11.2012 08:13:35 #
Mozilla Firefox dima
Можно.
26.11.2012 01:01:25 #
Safari Гость Noizefan
А можно ли сделать так:
Text

$a = "[i]jsjjsjsjsnhwhsbsheyh[/i]";
$bb = new bbcode($a);
$b = $bb -> gethtml();
 
?
23.04.2012 00:12:19 #
Mozilla Firefox dima
Вы не можете в статическом методе использовать $this. Пишите так:
 
PHP
class Filters {
    static function full($text) {
        $bb = new bbcode($text);
        include "smiles.php"; //Массив со смайлами
        $bb->mnemonics = $smiles;
        return $bb->get_html();
    }
}
22.04.2012 23:21:30 #
Google Chrome Гость
Ну, вот что я пишу:
PHP
class Filters extends bbcode{
        static function full($text)($text){
                parent::bbcode($text);
                include "smiles.php"; //Массив со смайлами
                $this->mnemonics = $smiles;
                return $this->get_html();
        }
}
Чтобы обращаться как Filters::full($text);
Но ошибка.
 
22.04.2012 19:28:48 #
Mozilla Firefox dima
Это общетеоретический вопрос или практический? В чем заключается ваша задача?
22.04.2012 19:09:10 #
Google Chrome Гость SPAHI4
скажите, как создать наследовательский класс со статеческой функцией вывода?
01.10.2011 22:05:01 #
Mozilla Firefox dima
Пожалуйста Well
01.10.2011 18:35:44 #
Mozilla Firefox Гость Дмитрий
спасибо большое! разобрался!
01.10.2011 18:24:52 #
Mozilla Firefox dima
1. В ООП там не обязательно разбираться. Можно просто вписать нужный вам style в
 
PHP
return '<img src="'.$src.'" '.$attr.' />';

2. Какие сообщения об ошибках?

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.