Song: Парсинг BB тегов вполняется обычными регулярными выражения php, суть работы которых сводится к простому изменению одного текста на другой (см. выше). Отличаются они только сложностью разработки, некоторые теги простые, например вышеупомянутый
болд, а некоторые - сложные, требуют различных проверок входящих параметров и вместо непосредственной замены одного текста на другой, вызывают специальную
call-back функцию, результат выполнения которой после промежуточных шагов всё-равно сведётся к замене одного текста на другой или без замены онного (например, в случае ошибки в теге).
Но в общем случае в коде форума регулярное выражение BB тега выглядит как одна/две/три строчки и его легко можно найти в тексте:
и т.д.
Например, BB тег
болда выглядит так:
$txt = preg_replace( "#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $txt );
Вам помогут даже англоязычные комментарии создателей форума.
В коде выше я выделил части регулярного выражения, по которым можно понять что это тег
.
При поиске других BB тегов вы можете воспользоваться этой частью регулярного выражения.
Например, регулярное выражение тега [CОDE] выглядит как:
$txt = preg_replace( "#\[cоde\](.+?)\[/cоde\]#ies", "\$this->regex_code_tag( '\\1' )", $txt );
Для ссылок чуть сложнее:
$txt = preg_replace( "#(^|\s)((http|https|news|ftp)://\w+[^\s\[\]]+)#ie" , "\$this->regex_build_url(array('html' => '\\2', 'show' => '\\2', 'st' => '\\1'))", $txt );
Тег %5bcolor="#048284"%5d$txt%5b/color%5d%20=%20preg_replace(%20"#\%5burl\%5d(\S+?)\%5b/url\%5d#ie",%20"\$this->regex_build_url(array('html'%20=>%20'\\1',%20'show'%20=>%20'\\1'))",%20%5bcolor="#048284"%5d$txt%5b/color%5d%20);
и%20т.д.
%5bcolor="%20gray%20fontsize%2010px%20lineheight%20110"%5d%5bb%5dSong_Bot:%20К%20посту%20прикреплены%20вложения,%20но%20посмотреть%20Вы%20их%20можете,%20только%20открыв%20статью%20в%20Форуме.%5b/color%5d