|
Показать HTML | Показать BBCode
API
Методы класса bbcode- string checkUrl(string url) - преобразует строку URL с целью защиты от javascript-инъекции. Возвращает преобразованную строку.
$url = 'javascript:alert(1)';
$url = bbcode::checkUrl($url);
echo $url;
// Выведет: ./javascript:alert(1)
- string get_html([array elems]) - генерирует и возвращает HTML-код. Необязательный аргумент elems обязан иметь ту же структруру, что и свойство tree (см. главу "Свойства класса bbcode"). Если аргумент не указан, то обрабатывается $this->tree.
$text = 'Строка с тегами [b][i]BBCode[/i][/b].';
$bb = new bbcode($text);
// Выводим HTML:
echo $bb->get_html();
- array get_syntax([array tree]) - конвертит дерево элементов BBCode в массив со структурой свойства syntax (см. главу "Свойства класса bbcode") и возвращает результат. Необязательный аргумент tree обязан иметь ту же структруру, что и свойство tree. Если аргумент не указан, то обрабатывается $this->tree.
- array get_tree() - обрабатывает массив $this->syntax, перезаписывает свойство tree и возвращает дерево элементов.
- string highlight() - возвращает подсвеченный BBCode.
$text = 'Строка с тегами [b][i]BBCode[/i][/b].';
$bb = new bbcode($text);
// Выводим подсвеченный BBCode:
echo $bb->highlight();
- string insert_smiles(string text) - обрабатывает строку text: мнемонизирует HTML-код, заменяет разрывы строк на <br />, вставляет смайлики (перечисленные в массиве mnemonics) и "автоматические ссылки" (если опция autolinks установлена в true). Возвращает преобразованную строку.
- boolean isPermissiblyChild(string parent, string child) - возвращает true, если тег с именем parent может иметь непосредственным потомком тег с именем child. В противном случае - false. Если parent - пустая строка, то проверяется, разрешено ли child входить в корень дерева BBCode.
- boolean must_close_tag(string current, string next) - логическая функция. Проверяет, должен ли тег с именем current закрыться перед началом тега с именем next. Возвращает true, если должен закрыться и false в противном случае.
- array normalize_bracket(array syntax) - превращает массив со структурой как у свойства syntax в правильную скобочную структуру. У возвращаемого массива отсутствует элементы 'layout', но присутствуют элементы 'level', куда пишется уровень вложенности тега.
- array parse([mixed code]) - парсер BBCode. Совершает синтаксический разбор BBCode, инициализирует свойства syntax и tree. Возвращает массив syntax. Необязательный аргумент code может быть строкой с текстом BBCode или массивом типа syntax или массивом типа tree (см. главу "Свойства класса bbcode"). Если code не указан, то синтаксическому разбору подвергается $this->text.
$text = 'Строка с тегами [b][i]BBCode[/i][/b].';
$bb = new bbcode;
// Парсим $text:
$bb->parse($text);
// Выводим HTML:
echo $bb->get_html();
- string specialchars(string string) - конвертирует специальные символы в строке string в мнемоники BBCode и возвращает результат.
Таблица трансляции| Спецсимвол | Мнемоника
|
|---|
| [ | @l;
| | ] | @r;
| | " | @q;
| | ' | @a;
| | @ | @at;
|
- string unspecialchars(string string) - конвертирует мнемоники BBCode в строке string в специальные символы и возвращает результат. Это - обратная функция для specialchars.
Последнее редактирование: 2007-08-23 17:32:27
Метки материала:
string, xBB, API, bbcode, PHP
15 комментариев
Гость mif
Пожалуйста, напишите правильный код функций specialchars и unspecialchars. В каком месте его надо применять перед добавлением данных в базу?
Перед добавлением у меня идет:
$bb = new bbcode($_POST['content']);
$bb->specialchars($_POST['content']);
$_POST['content'] = serialize($bb->syntax);
вывод в редактор:
$syntax = unserialize($music['content']);
$bb = new bbcode($syntax);
$bbtextedit = htmlspecialchars($bb->text);
в каких местах надо вставить эти specialchars и unspecialchars? Объясните, пожалуйста, а то все уже испробовал.
Гость mif
вернее перед добавлением у меня идет вот это:
$bb = new bbcode($_POST['content']);
$_POST['content'] = serialize($bb->syntax);
dima
В данном случае ненужны ни $bb->specialchars, ни unspecialchars.
Самый простой способ работы:
$text = isset($_POST['text']) ? $_POST['text'] : '';
$sql = "INSERT INTO my_table (my_text) VALUES ('" . mysql_real_escape_string($text) . "')";
mysql_query($sql);
$sql = 'SELECT my_text FROM my_table WHERE ID = ' . $id;
$result = mysql_query($sql);
$text = ($data = mysql_fetch_row($result)) ? $data[0] : '';
$bb = new bbcode($text);
echo $bb->get_html();
$sql = 'SELECT text FROM my_table WHERE ID = ' . $id;
$result = mysql_query($sql);
$text = ($data = mysql_fetch_row($result)) ? $data[0] : '';
echo '<textarea>' . htmlspecialchars($text) . '</textarea>';
Гость mif
да, я уже только что сам догадался  Просто раньше делал строго по примеру, приведенному в документации.
Огромное спасибо за модуль xBB
dima
Пожалуйста.
Всякие дополнительные свойства и методы понадобятся вам, если захотите сделать что-то извращенно неординарное.
А без этого работа с либой достаточно элементарна.
Гость Aleksendr
Скажите, а есть ли метод распарсивания html в bbcode
Гость Aleksendr
А нашел $bb->text
dima
К сожалению, свойство $bb->text вам мало поможет. Оно просто содержит исходный текст BBCode, указанный напрямую, или восстановленный из $bb->syntax или из $bb->tree.
Метода для получения BBCode из HTML в xBB нет. В случае сложного HTML такой метод выдавал бы ужасный BBCode.
В случае достаточно простого HTML можно обойтись простой заменой '<', '>' на '[', ']'. В этом случае нормально конвертнутся такие простые теги, как <b>, <i>, <u>, <s>, <em>, <strong> и т.п. Нормально конвертнутся <a>, <p>, <blockquote>, <table> и еще кое что (смотрите список тегов xBB).
Также обратите внимание на http://www.seabreezecompute...tml2bbcode/ - Может быть поможет.
Гость E
еще бы больше кодов
Оставьте, пожалуйста, свой комментарий к публикации
|