xBB – бесплатные скрипты PHP и доки для вебмастеров

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

Показать HTML | Показать 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


 
 

Последнее редактирование: 2008-02-01 10:32:54

Метки материала: BBCode, xBB, PHP, get_html, API, смайлики, парсер, текст, HTML, bbcode.lib.php, скрипт BBCode


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

03.02.2010 12:39:12 #
Mozilla Firefox dima
Проверьте, полностью ли залита моя библиотека в './include/bbcode', проверьте права доступа. На все файлы библиотеки установите права 644 или более высокие. На все папки - 755
03.02.2010 16:47:36 #
Google Chrome Гость Monster
библиотека залита полностью(чтобы наверняка - перезалил еще раз), права установлены как вы сказали... есть еще предположения? Not so
03.02.2010 17:43:29 #
Mozilla Firefox dima
Понятия не имею, почему у вас не работает библиотека. Надо смотреть самому.
03.02.2010 18:14:52 #
Google Chrome Гость Monster
нашел проблему!
у меня хостер прикопировании файлов по фтп все файлы и директории сохраняет в нижнем регистре! I am malicious
 
Решил проблему, спасибо за внимание! Well
03.02.2010 18:17:05 #
Mozilla Firefox dima
Не за что Well Рад, что все обошлось
08.02.2010 07:18:42 #
Opera Гость Колян
Здравствуйте, помогите пожалуйста разобраться.
Хочу чтоб форма бб кодов подгружалась с помощью ajax, при прямом обращении на скрипт всё работает, а вот когда пытаюсь подгрузить с помощью аякса появляется всё кроме бб кодов.. Подскажите в чём проблема, в заранее благодарен!
08.02.2010 10:33:10 #
Mozilla Firefox dima
Может быть это Вам поможет: проблема с XAJAX
08.02.2010 13:53:12 #
Opera Гость Колян
Чтот не получается, вот смотрите:
 

Вот система такая:
 

У меня есть 2 php файла
 
Пример кода в первом.
 
<script type=\"text/javascript\" src=\1.js\"></script>
 
<script type=\"text/javascript\" src=\"prototype.js\"></script>
 

 

<a href=\"#\" onclick=\"ad($this_link[id])\">апаппапа
 
Получается вызывает из 1.js вот это function ad(id){
setLoading('loading_alert', 1);
var formElements = Form.serialize('editForm');
var ajax = new Ajax.Updater('returnOut',"a.php?resource=member&action=edit&id="+id, {method:'post', postBody:formElements, evalScripts:true, asynchronous:true});
}
 

 
Без перезагрузки страницы подгружается второй php:
 
<? echo "
</script>
<script type=\"text/javascript\" src=\"bbcode/xbb.js.php\"></script>
<script type=\"text/javascript\">
XBB.path = 'bbcode';
XBB.textarea_id = 'prim';
XBB.area_width = '480px';
XBB.area_height = '150px';
XBB.state = 'plain';
XBB.lang = 'ru_cp1251';
</script>
 

<textarea name=\"prim\" id=\"prim\"  maxlength=$settings[text_limit]></textarea>
 

?>
 
смысл я думаю понятен.
Получается просто подгружается поле без xbb
08.02.2010 22:40:26 #
Mozilla Firefox dima
1. Не вижу
 
HTML
<script type="text/javascript">XBB.init();</script>

2. Вы саму форму с редактором ажаксом выводите? Если так, то код JavaScript, находящийся в получаемом коде HTML, не будет работать.
09.02.2010 03:10:16 #
Opera Гость Колян
<script type="text/javascript">XBB.init();</script> забыл написать это тоже вписываю..
Да форма аяксом выводится! А что ни как это не сделать? Tears

Оставьте свой комментарий:

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

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


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