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

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

Показать 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 комментариев

21.08.2007 14:27:58 #
Неизвестный браузер Гость 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? Объясните, пожалуйста, а то все уже испробовал.
21.08.2007 14:29:30 #
Неизвестный браузер Гость mif
вернее перед добавлением у меня идет вот это:
$bb = new bbcode($_POST['content']);
$_POST['content'] = serialize($bb->syntax);
21.08.2007 15:02:33 #
Неизвестный браузер dima
В данном случае ненужны ни $bb->specialchars, ни unspecialchars.
 
Самый простой способ работы:
 
Получить методом POST и сохранить в базу
$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>';
21.08.2007 15:12:45 #
Неизвестный браузер Гость mif
да, я уже только что сам догадался Well Просто раньше делал строго по примеру, приведенному в документации.
Огромное спасибо за модуль xBB Well
21.08.2007 15:30:02 #
Неизвестный браузер dima
Пожалуйста.
 
Всякие дополнительные свойства и методы понадобятся вам, если захотите сделать что-то извращенно неординарное. Well
 
А без этого работа с либой достаточно элементарна.
13.09.2007 13:24:42 #
Mozilla Firefox Гость Aleksendr
Скажите, а есть ли метод распарсивания html в bbcode
13.09.2007 13:34:46 #
Mozilla Firefox Гость Aleksendr
А нашел $bb->text
13.09.2007 18:20:22 #
Mozilla Firefox 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/ - Может быть поможет.
07.07.2008 21:38:00 #
Opera Гость jeck
спс)   :fellow:                           cпасибо!!!!!
30.10.2008 16:04:38 #
Opera Гость E
еще бы больше кодов

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

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

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


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