1 (02.12.2016 06:17 отредактировано Visman)

Тема: [TEST] sva_parserus (парсер Parserus для PunBB)

Лежит тут (Please log in or register to see this URL)

Мой парсер bb-кодов (Please log in or register to see this URL) в виде расширения для форума.
Заменяет (или пытается заменить smile ) стандартный парсер.

Требования: PHP >= 5.4.0

Для своей работы использует хуки:

  • es_essentials - подключение автозагрузчика;

  • ps_start - первоначальные настройки парсера;

  • ps_parse_message_start - парсинг сообщений в html;

  • ps_parse_signature_start - парсинг подписей в html;

  • ps_preparse_bbcode_start - проверка введенных сообщений, удаление пустых bb-кодов, автодетект ссылок, возврат ошибок.

* Остальные хуки из include/parser.php (кроме хуков из функций handle_url_tag() и handle_img_tag()) не должны выполняться, так как остаются за бортом, в старом парсере.

Добавлены два (на данный момент) новых хука:

  • parserus_start_vars - для установки переменных перед стартом парсера:

    • $smilies - оригинальный массив смайлов

    • $smFolder - путь до папки со смайлами (по умолчанию $base_url . '/img/smilies/')

    • $smTpl - шаблон для отображения смайлов (по умолчанию '<img src="{url}" alt="{alt}">')

    • $whiteListForSign - массив bb-кодов разрешенных в подписи (по умолчанию ['b', 'i', 'u', 'color', 'colour', 'email', 'img', 'url'])

  • parserus_start_set - для настройки парсера (добавление новых bb-кодов, переменных парсера) после его инициализации.

    • $parser - ссылка на парсер (класс ParserusEx)

Сейчас парсер знает стандартные bb-коды (b, i, u, color, colour, h, quote, code, email, *, list, img, url) и spoiler (из моего расширения sva_spoiler).
Легко можно реализовать сложные bb-коды.
(Please log in or register to see this URL) на wiki  с реализацией таблицы с 11 параметрами в bb-коде:

[table align="right" border="1" bordercolor="#ccc" cellpadding="5" cellspacing="0" style="border-collapse:collapse; width:500px"]
       [tr]
           [th style=width:50%]Position[/th]
           [th style=width:50%]Astronaut[/th]
       [/tr]
       [tr]
           [td]Commander[/td]
           [td]Neil A. Armstrong[/td]
       [/tr]
       [tr]
           [td]Command Module Pilot[/td]
           [td]Michael Collins[/td]
       [/tr]
       [tr]
           [td]Lunar Module Pilot[/td]
           [td]Edwin "Buzz" E. Aldrin, Jr.[/td]
       [/tr]
[/table]

Вот такой текст

[url][img]http://localhost/punbb/img/avatars/2.gif[/img][b]картинка ссылка[/b][/url]

сейчас преобразовывается вот в такой html tongue

<a href="http://localhost/punbb/img/avatars/2.gif"><span class="postimg"><img src="http://localhost/punbb/img/avatars/2.gif" alt="2.gif" /></span><strong>картинка ссылка</strong></a>
Моя (Please log in or register to see this URL) FluxBB 1.5, (Please log in or register to see this URL), (Please log in or register to see this URL).

Поделиться

2

Re: [TEST] sva_parserus (парсер Parserus для PunBB)

http://jpegshare.net/images/a8/91/a8912aa03f0252122613f5871ce1d158.png

Моя (Please log in or register to see this URL) FluxBB 1.5, (Please log in or register to see this URL), (Please log in or register to see this URL).

Поделиться

3

Re: [TEST] sva_parserus (парсер Parserus для PunBB)

Как насчет тестирования производительности?

Захочешь — найдешь время, не захочешь — найдешь причину.

Поделиться

4

Re: [TEST] sva_parserus (парсер Parserus для PunBB)

hcs, а это уже кто-нибудь на реальном сервере под Linux должен попробовать с большими сообщениями в темах, а то у меня на локальном компьютере строковые функцию показывают меньшую производительность чем регулярные выражения smile

Моя (Please log in or register to see this URL) FluxBB 1.5, (Please log in or register to see this URL), (Please log in or register to see this URL).

Поделиться

5 (03.12.2016 03:36 отредактировано Visman)

Re: [TEST] sva_parserus (парсер Parserus для PunBB)

Тесты
Win 7
Конфигурация расширений одинаковая для обоих вариантов, но для первого столбца расширение установлено и работает, а для второго столбца расширение удалено в админке.

php 5.4.31

0.141    0.132
0.119    0.111
0.123    0.102
0.124    0.103
0.122    0.097
0.116    0.105
0.129    0.103
0.113    0.104
0.112    0.117
0.122    0.099
-------------
0.122    0.107 <- среднее


php 7.0.4

0.068    0.058
0.067    0.054
0.061    0.047
0.050    0.050
0.062    0.042
0.076    0.045
0.062    0.054
0.067    0.052
0.054    0.052
0.061    0.057
-------------
0.063    0.051 <- среднее

Тестировал на копии этой страницы: (Please log in or register to see this URL)
Замеры показаны по счетчику выводимому при

define('FORUM_DEBUG', 1);
Моя (Please log in or register to see this URL) FluxBB 1.5, (Please log in or register to see this URL), (Please log in or register to see this URL).

Поделиться

6

Re: [TEST] sva_parserus (парсер Parserus для PunBB)

раз уж вы разбирались с bbcode парсером - можно его в punbb отключить везде и совсем?

Добавлено спустя 1 минуту 29 секунд:

т.е. чтобы он не обрабатывал bbcode и не расходовал ресурсы.
у меня идея - сделать wisywig на базе contenteditable="true" или просто текст вводить для тех кто не поддерживает эту фичу

Добавлено спустя 8 минут 39 секунд:

отключить через расширения имеется ввиду а не модификацией кода punbb

Сайт Otto.Zukamoto

Поделиться

7

Re: [TEST] sva_parserus (парсер Parserus для PunBB)

Как то пытался отключить подключаемый в топике парсер и подключить свой написанный на классе, делал так :
Объявлял константу что мол файл уже подключен, а затем вешал на след хук подключение своего парсера. Все работало.
Хак конечно, другого способа не нашел )

Новые стили и расширения на  (Please log in or register to see this URL)

Поделиться

8 (15.12.2016 21:17 отредактировано Visman)

Re: [TEST] sva_parserus (парсер Parserus для PunBB)

Otto.Zukamoto, минимизировать работу родного парсера PunBB (запуск функций все равно будет происходить) можно так:
1. хуки ps_preparse_bbcode_start, ps_parse_message_start, ps_parse_signature_start (priority="1")

return $text;

В таком варианте, если другие расширения не вмешиваются, парсинга бб-кодов не будет, смайлов не будет, цензуры не будет.
P.S. А можно зайти в админку и убрать все нужные галки в настройках форума.

Моя (Please log in or register to see this URL) FluxBB 1.5, (Please log in or register to see this URL), (Please log in or register to see this URL).

Поделиться