pc.uz
Поиск
Расширенный поиск
РегистрацияЗабыли пароль? Запомнить
Товары Каталог компаний Публикации Объявления События Полезные сервисы Наши вакансии
Суббота, 23 июня 2018 г.
USD: 7883.99   EUR: 9150.95
Версия для печати
2007-03-08 16:34:51

xBB v. 0.24 - PHP-библиотека для работы с BBCode. Часть 1. Общие сведения

  1. Общие сведения
  2. Список тегов
  3. Быстрый старт
  4. API
  5. Применение CSS
  6. Условия использования и инсталляция

Общие сведения

xBB - написанная на PHP библиотека для работы с BBCode, которая является развитием библиотеки, описанной здесь.

xBB может быть использован в гостевых книгах, форумах, на досках объявлений и т.п. На этом сайте (http://www.pc.uz) поддержка BBCode в пользовательских комментариях реализована с помощью xBB. Данная документация целиком сверстана в BBCode и конвертирована в HTML с помощью xBB.

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

В умолчальной поставке xBB поддерживает 41 тег, "автоматические ссылки", смайлы. Коллекция тегов и смайлов легко расширяема.

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

  1. Названия тегов и атрибутов не зависят от регистра. Например, [font=Arial size=+1], [FONT=Arial SIZE=+1] и [FoNt=Arial SiZe=+1] - равнозначно.

  2. Значения атрибутов могут быть закавычены "так" и 'так', либо никак не закавычены. Следующие конструкции равнозначны: [google="BBCode"], [google='BBCode'], [google=BBCode].. Следующие конструкции НЕ равнозначны: [google="Поддержка BBCode"], [google=Поддержка BBCode]. Последний вариант будет интерпретирован скриптом как [google="Поддержка" BBCode=""].

  3. Теги могут быть вложенными. Но те из них, которые создают элементы блочного типа (такие как [h1] или [table]), не могут быть вложены в строчные теги (такие как [i] или [color]). Строчные элементы закрываются, если начинается блочный. Эти ограничения обусловлены требованиями W3C.

  4. Теги должны быть правильно вложены. Неправильный код "[b][i]текст[/b][/i]" будет интерпретирован скриптом как "[b][i]текст[/i][/b][/i]". Это ограничение также обусловлено требованием W3C.

  5. В данной реализации BBCode поддерживаются закрывающие теги вида [/]. Такой тег закрывает последний незакрытый тег. Например, [b]текст[/b] равнозначно [b]текст[/]. Тем не менее рекомендую пользоваться именно первой формой написания. Attention Тогда, в случае нагромождения вложенных тегов, вам будет легче ориентроваться в коде. Кроме того, первая форма написания позволяет скрипту более корректно обрабатывать пользовательские ошибки.

  6. Поддерживается закрытие тега способом [тег /]. Например, конструкции [url name=top][/url] и [url name=top /] равнозначны.

  7. В некоторых случаях можно не писать закрывающий тег. Например, тег [tr] (строка таблицы), будет автоматически закрыт, как только встретится очередной [tr] или закрывающий тег [/table]. Тег [hr] вообще не имеет закрывающего, интерпретируется скриптом как [hr/]. О поведении конкретных тегов смотрите их описания.

  8. При конвертации ББКода в HTML сохраняется форматирование пробелами. Т.е. все двойные пробелы переводятся в '&nbsp;&nbsp;', все переводы строк заменяются на '<br />'. Однако вокруг некоторых элементов (таких как [h1]) игнорируются 1-2 перевода строк, так как эти элементы сами по себе создают дополнительные отступы. Это сделано для того, чтобы по возможности приблизить визуальное представление HTML к исходному ББкоду.
xBB поддерживает мнемонизацию специальных символов. Например, чтобы вывести на печать [b] без преобразования в HTML, можно ввести @l;b@r;. Поддерживаются мнемоники следующих спецсимволов:

  1. Открывающая квадратная скобка '[' может быть мнемонизирована как '@l;'.

  2. Закрывающая квадратная скобка ']' может быть мнемонизирована как '@r;'.

  3. Двойная кавычка '"' может быть мнемонизирована как '@q;'.

  4. Одинарная кавычка "'" (апостроф) может быть мнемонизирована как '@a;'.

  5. Знак собачки '@' может быть мнемонизирован как '@at;'.
Поддержка "автоматических ссылок" означает, что строки вида "http://какойто_uri", "https://какойто_uri", "ftp://какойто_uri", "www.какойто_uri" и "ящик@домен" автоматически конвертируются в соответствующие гиперссылки. Этого не происходит для содержимого таких тегов как [code], [nobb] и аналогичных. Автоматические ссылки могут быть отключены. Как это делается - смотрите главу об API.

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

Далее подробно описываются теги, поддержка которых реализована в xBB по умолчанию.

Скачать zip-архив со скриптом, тестами и набором смайликов можно здесь.

Прочитано: 59392 раз(а)  |  Комментариев: 49  |  Средняя оценка (макс. 7): 7 (Голосов: 1)
Вы не авторизованы для голосования
xbb
Еще по теме:

Комментарии к статье (49).
2012-03-02 18:10:29, Гость_nbbnbnbn:
2011-04-24 00:37:26, Гость_алекс:
в какую часть кода мне его вставлять ? там где поле ввода текста, или же в обработчик?
2009-05-25 14:13:59, Гость_Айдин:
Попробовал поставить, тест проходит, а дело не делает.
В моем случае данные из форума на phpBB из базы данных дублируются на обычную страницу, в этом случае не происходит замена bbcode`а.
2009-03-09 15:08:12, dima [админ, автор статьи]:
Офф сайт: http://xbb.uz/
2009-03-06 15:37:27, Гость_Евгений:
У меня не работает. При предварительном просмотре, в демке, выводится чистый лист.
2008-11-02 15:16:16, el:
Вахъ спасЫба!
 
надо бы ещё выравнивание прикрутить (ушёл читать на офф сайт)
2008-02-13 13:04:11, Гость_demiurg:
Огромнейшее спасибо...
2007-07-30 15:00:53, Гость:
автор
Парсер реализован несколько отлично от аналогов. Обычно такие парсеры реализуются с помощью регулярных выражений. Этот же использует метод конечных автоматов. Имеет следующий плюс: как бы ни была богата и продвинута коллекция тегов, поддерживаемая в данной реализации, скорость обработки текстов будет постоянной, так как осуществляется за фиксированное число проходов. Коллекцию тегов можно увеличивать до бесконечности, а скрипт будет выполняться одинаково быстро.

Вот это вот вообще замечательно
 

2007-07-27 08:05:26, Гость_xaoc:
:) надо заценить
2007-07-26 17:58:42, dima [админ, автор статьи]:
Ну вот. Прикрутил эту версию к ПС.УЗ-у. :D
2007-07-26 10:55:54, dima [админ, автор статьи]:
Напомню ссылку, по которой можно скачать библиотеку: http://xbb.uz
2007-07-26 10:50:53, dima [админ, автор статьи]:

xBB версии 0.29

Основные отличия от версии 0.28:
  1. Исправлены баги. Теги не добавлялись "на лету", - исправлено. Ссылки вида 'www.чего-то' преобразовывались к виду './www.чего-то', - исправлено. Теперь они, как положено, преобразуются к виду 'http://www.чего-то'.
     
  2. С учетом особенностей IE (код '<br /><br />' равносилен коду '<br />') несколько изменено форматирование текста. Теперь в IE текст выглядит более ожидаемо. В других браузерах все выглядит как раньше.
     
  3. Добавлены новые теги: [bdo], [big], [blockquote], [br], [cite], [del], [em], [h4], [h5], [h6], [ins], [ol], [p], [pre], [small], [strong], [ul], [var].
     
  4. Изменена конвертация в HTML тега [quote]. Контейнер div заменен на более семантически правильный blockquote.
     
  5. Изменен дизайн тестовых примеров.

Внесены изменения в xBBEditor:
  1. Для ускорения загрузки и работы, поддержания работоспособности редактора при разрыве соединения пришлось отказаться от технологии Ajax для подсветки кода. Для этого парсер был переписан на клиентском JavaScript в объеме, достаточном для подсветки кода.
     
  2. Исправил глюк. Если форма с редактором находилась внизу страницы, то при загрузке редактора страница прокручивалась вниз. Теперь этого не происходит.
     
  3. Переработал тулбар. Теперь внешний вид кнопок при активации/нажатии меняется средствами CSS, а не путем перегрузки картинки. Таким образом уменьшен объем загружаемых картинок и тулбар не "едет" в случае разрыва соединения с нетом. Уменьшен вес всех кнопок.
     
  4. Убрал левую панель. Для вставки смайликов создал специальную кнопку. Для информации о программе, - тоже. Тем самым расширена рабочая область редактора.
     
  5. Исправил глюк. Если редактор находился в режиме подсветки кода, то в FF при сабмите формы пропадали переводы строк. Теперь этого не происходит.
     
  6. Добавил кнопку предварительного просмотра.
     
  7. Создал еще один конфигурационный файл, который определяет список шрифтов, палитру цветов и основные смайлики, предлагаемые на выбор пользователя.

Тем не мение должен предупредить, что xBBEditor пока еще остается сырым экспериментальным приложением. Использовать его в рабочих проектах рекомендуется с большой осторожностью. Парсер xBB никак не зависит от xBBEditor-а и может быть использован в паре с любым другим редактором или без какого либо редактора.
 
Документацию исправлю в ближайшее время.
2007-05-04 09:22:25, dima [админ, автор статьи]:
Вроде красный а не серый. Наверное быть стоит CSS порыть, может быть там стиль <i> или <strong> изменен.
2007-05-04 09:17:24, dima [админ, автор статьи]:
Тест: Текст darkred
2007-05-04 00:00:49, Гость_woin2:
Конструкция в вида:
Text
[color=darkred][i][b]Текст:[/b][/i][/color]
версией 0.28 переводится в фон... серого цвета. ;)
 
Что касается размеров шрифтов.
попробовал немного изменить функцию замены размера. теперь если шрифт больше семёрки то ставится не 7. А исходный шрифт делиться на три.
меня подобное вполне устроило  :B
2007-04-28 04:01:17, dima [админ, автор статьи]:
Что касается размеров шрифтов.
 
Я посчитал, что 7 градаций, соответствующих стандарту HTML, вполне достаточно пользователю. Причем, эти 7 градаций кажутся мне более удобными, чем указание размера шрифта в пикселях, как это предусмотрено, например, в phpBB.
2007-04-28 03:50:39, dima [админ, автор статьи]:
Версий BBCode множество (по числу форумный движков и даже больше), а либа у меня одна :cry:. Поэтому, обеспечить совместимость со всеми предыдущими реализациями BBCode не могу.
 
К тому же возможностей у моего парсера больше, чем у любого другого. Но не факт, что другие разработчики парсеров BBCode будут стремиться к совместимости с моей либой. А значит несовместимость будет нарастать.
 
Но есть выход. Я стараюсь разработать достаточно гибкое API, позволяющее без особых усилий добавлять новые теги и переопределять старые. Пользуясь этим API сайтостроитель может "подогнать" либу под любую версию BBCode или создать собственную :)
 
ББКод не имеет стандарта. Он развивается и видоизменяется на всяком сколько нибудь продвинутом форуме, как угодно админам.
2007-04-27 22:59:54, Гость_Андрей:
Вот и нет совместимости по размерам шрифтов в этой версии и стандартном bbcode, с форума
2007-04-27 22:59:00, Гость_Андрей:
Хорошая библиотека, но плохо, что нет совместной поддержки HTML и bbcode Жаль :(
2007-04-23 01:02:59, dima [админ, автор статьи]:

xBB версии 0.28

Уже несколько человек попросили поторопиться с очередной версией xBB. Главным образом из-за xBBEditor-а. И хотя он абсолютно сырой, тянуть дольше я не могу. Иначе, выход этой версии затянется на неопределенный срок.
 
Вот основные отличия версии 0.28 от предыдущих:
  1. Исправлено несколько багов. В том числе закрыта уязвимость для javascript-инъекции в теге [img].
     
  2. В класс bbcode добавлен новый метод: checkUrl($url), преобразовывающий URL-ы к безопасному виду от javascript.
     
  3. Упрощено добавление новых тегов. Вместо утомительного перечисления тегов, куда можно и куда нельзя вложить данный, и какие теги должны закрываться, когда начинается данный и т.п., введено понятие "модель поведения" тега, указание которой решает многие проблемы. Более подробно будет описано в документации.
     
  4. Все классы, реализующие отдельные теги вынесены в отдельные файлы по принципу "один класс - один файл". Эти файлы подключаются не скопом а по мере надобности.
     
  5. В состав пакета xBB включен пакет GeSHi для реализации тегов подсветки синтаксиса. Вместе с этими тегами xBB поддерживает теперь 116 тегов.
     
  6. Умолчальная конфигурация объектов bbcode вынесена в отдельный файл. Это позволяет уменьшить количество повторяющегося кода при использовании библиотеки в нескольких скриптах. Возможности конфигурирования "на лету" от этого нисколько не пострадали.
     
  7. Библиотека теперь поддерживается в двух вариантах: для PHP4 и для PHP5. Оба варианта практически одинаковы. Различия не выходят за рамки минимума, при котором в PHP5 с включенным E_STRICT не возникает ошибок.
     
  8. В пакет включена клиентская часть - xBBEditor. Добавлен как экспериментальное приложение. Если возьметесь его использовать, то должны знать следующее:
    1. Это не получится у вас без напильника.
    2. Возможно, что в следующих версиях xBBEditor будет коренным образом переделан и не будет совместим с текущей версией.

Документацию исправить не успел. Займусь этим немедленно.
 
Скачать можно на http://xbb.uz
В этой теме комментарии отключены.
Регистрация в каталоге Обратная связь Размещение на сайте Приглашаем авторов! О проекте Наши партнеры
Все товары, подлежащие обязательной сертификации, сертифицированы, лицензируемые услуги - лицензированы. © ООО «Norma»; 2018. Все права защищены.
YP
Рейтинг@Mail.ru
Uzinfocom Datacenter
Add engine