Лучший способ проанализировать bbcode

Сегодня принято получать пространство стека кратным этому размеру по нескольким причинам:

  • строки кэша поддерживают это поведение, поддерживая все данные в кэше.
  • предварительно выделено место для временных файлов, избегая использования инструкций push и pop в случае необходимости некоторого временного хранения вне процессора.
  • отдельные команды push и pop ухудшают выполнение конвейера, требуя обновления данных перед выполнением следующей инструкции. Это разъединяет зависимости данных между последовательными инструкциями и позволяет им работать быстрее.

По этой причине фактические компиляторы указывают ABI, которые должны быть разработаны таким образом.

9
задан Luca Filosofi 13 August 2012 в 13:25
поделиться

4 ответа

Существует и pecl и ГРУША BBCode парсинг библиотеки. Программное обеспечение достаточно трудно, не переосмысливая годы работы самостоятельно.

Если бы ни один из тех не является опцией, я сконцентрировался бы на превращении BBCode в допустимую строку XML и затем использования Вашего любимого XML парсинг стандартной программы на этом. Очень очень общее представление здесь, но

  1. Выполните код через htmlspecialchars для выхода из любых объектов тот выход потребности

  2. Преобразуйте все [и] символы в <и> соответственно

  3. Не забывайте объяснять двоеточие в случаях как [tagname:

Если бы BBCode был вложен правильно, то Вы должны быть все установлены передать эту строку в XML, анализирующий объект (SimpleXML, DOMDocument, и т.д.)

6
ответ дан 4 December 2019 в 08:02
поделиться

Существует несколько существующих библиотек для парсинга BBCode, может быть легче изучить библиотеки, чем попытка к самокрутке:

Вот пара, я уверен, что существует больше, если Вы озираетесь:
PECL bbcode
ГРУША HTML_BBCodeParser

8
ответ дан 4 December 2019 в 08:02
поделиться

Ответ к: "Какая-либо лучшая идея?" (и я предполагаю, что это было приглашением не только для улучшения по сравнению с bbcode-определенными предложениями),

Мы недавно посмотрели на хождение bbcode путем и выбрали использование htmlpurifier вместо этого. Это решение базировалось частично на (по общему признанию смещено, вероятно) сравнения между различными методами, перечисленными htmlpurifier группой здесь и обсуждением bbcode (снова htmlpurifer группой) здесь

И для записи я думаю, что Ваш английский язык был очень хорош. Я уверен, что это намного лучше, чем я мог сделать на Вашем родном языке.

3
ответ дан 4 December 2019 в 08:02
поделиться

Используйте preg_split () с флагом PREG_DELIM_CAPTURE для разделения исходного кода на теги и не теги. Затем выполните итерацию по тегам, сохраняя стек открытых блоков (например, когда вы видите открывающий тег, добавьте его в массив. Когда вы видите закрывающий тег, удаляйте элементы с конца массива, пока закрывающий тег не совпадет с открывающим тегом.)

{{1 }}
2
ответ дан 4 December 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: