XBB (библиотека)

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

xBB — написанная на PHP библиотека для работы с bb-кодами и смайлами. Может быть использована в гостевых книгах, форумах, на досках объявлений и т. п.

Парсер BBCode реализован несколько отлично от аналогов (кроме форума Simple Machines Forum, в нём используется подобный подход). Обычно такие парсеры реализуются с помощью регулярных выражений. Этот же использует метод конечных автоматов. Имеет следующий плюс: как бы ни была богата и продвинута коллекция тегов, поддерживаемая в данной реализации, скорость обработки текстов будет постоянной, так как осуществляется за фиксированное число проходов. Коллекцию поддерживаемых тегов можно увеличивать до бесконечности, а скрипт будет выполняться одинаково быстро. Скорость его работы зависит только от величины текста и от числа тегов, используемых в конкретном тексте, но не от числа всех возможных тегов и вариантов их написания. Скрипт не парсит текст многократно для каждого тега или варианта написания тега.

xBB поддерживает более 100 тегов, «автоматические ссылки», смайлы. Коллекция тегов и смайлов легко расширяема. Включает в себя клиентскую часть — xBBEditor для редактирования текста BBCode.

Содержание

Теги имеют следующие особенности

  • Названия тегов и атрибутов не зависят от регистра. Например, [font=Arial size=+1], [FONT=Arial SIZE=+1] и [FoNt=Arial SiZe=+1] — равнозначно.
  • Значения атрибутов могут быть закавычены «так» и 'так', либо никак не закавычены. Следующие конструкции равнозначны: [google="BBCode"], [google='BBCode'], [google=BBCode]. Следующие конструкции НЕ равнозначны: [google="Поддержка BBCode"], [google=Поддержка BBCode]. Последний вариант будет интерпретирован скриптом как [google="Поддержка" BBCode="«].
  • Теги могут быть вложенными. Но те из них, которые создают элементы блочного типа (такие как [h1] или [table]), не могут быть вложены в строчные теги (такие как [i] или [color]). Строчные элементы закрываются, если начинается блочный. Эти ограничения обусловлены требованиями W3C.
  • Теги должны быть правильно вложены. Неправильный код „[b][i]текст[/b][/i]“ будет интерпретирован скриптом как „[b][i]текст[/i][/b][/i]“. Это ограничение также обусловлено требованием W3C.
  • В данной реализации BBCode поддерживаются закрывающие теги вида [/]. Такой тег закрывает последний незакрытый тег. Например, [b]текст[/b] равнозначно [b]текст[/].
  • Поддерживается закрытие тега способом [тег /]. Например, конструкции [url name=top][/url] и [url name=top /] равнозначны.
  • В некоторых случаях можно не писать закрывающий тег. Например, тег [tr] (строка таблицы), будет автоматически закрыт, как только встретится очередной [tr] или закрывающий тег [/table]. Тег [hr] вообще не имеет закрывающего, интерпретируется скриптом как [hr/].
  • При конвертации ББКода в HTML сохраняется форматирование пробелами. То есть все двойные пробелы переводятся в '&nbsp;&nbsp;', все переводы строк заменяются на '<br />'. Однако вокруг некоторых элементов (таких как [h1]) игнорируются 1-2 перевода строк, так как эти элементы сами по себе создают дополнительные отступы. Это сделано для того, чтобы по возможности приблизить визуальное представление HTML к исходному ББкоду.

xBB поддерживает мнемонизацию специальных символов. Например, чтобы вывести на печать [b] без преобразования в HTML, можно ввести @l;b@r;. Поддерживаются мнемоники следующих спецсимволов:

  • Открывающая квадратная скобка '[' может быть мнемонизирована как '@l;'.
  • Закрывающая квадратная скобка ']' может быть мнемонизирована как '@r;'.
  • Двойная кавычка '»' может быть мнемонизирована как '@q;'.
  • Одинарная кавычка «'» (апостроф) может быть мнемонизирована как '@a;'.
  • Знак собачки '@' может быть мнемонизирован как '@at;'.

Поддержка «автоматических ссылок» означает, что строки вида «http://какойто_uri», »https://какойто_uri», "ftp://какойто_uri», «svn://какойто_uri» и т. п., а также «www.какойто_uri» и «ящик@домен» автоматически конвертируются в соответствующие гиперссылки. Этого не происходит для содержимого таких тегов как [code], [nobb] и аналогичных. Автоматические ссылки могут быть отключены.

Лицензия

Библиотека распространяется бесплатно по лицензии GNU GPL v 2. Согласно этой лицензии ее можно свободно использовать, распространять и изменять при условии, что ваши собственные программные продукты, использующие эту библиотеку, будут распространяться по той-же лицензии GNU GPL.

Критика

  • нет обратной конвертации, то есть из html в BB-код.

Ссылки


Личные инструменты

Served in 0.194 secs.