EMINEM,
private static function highlight_bb($var)
{
// Список поиска
$search = array(
'#\(.+?)\#is', // Жирный
'#\(.+?)\#is', // Курсив
'#\(.+?)\#is', // Подчеркнутый
'#\(.+?)\#is', // Зачеркнутый
'#\(.+?)\#is', // Маленький шрифт
'#\(.+?)\#is', // Большой шрифт
'#\(.+?)\#is', // Красный
'#\(.+?)\#is', // Зеленый
'#\(.+?)\#is', // Синий
'!\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)](.+?)\[/color]!is', // Цвет шрифта
'!\[bg=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)](.+?)\[/bg]!is', // Цвет фона
'#\[(quote|c)](.+?)\[/(quote|c)]#is', // Цитата
'#\[\*](.+?)\[/\*]#is', // Список
'#\(.+?) (+/-)(.+?)\#is' // Спойлер
);
// Список замены
$replace = array(
'<span style="font-weight: bold">$1</span>', // Жирный
'<span style="font-style:italic">$1</span>', // Курсив
'<span style="text-decoration:underline">$1</span>', // Подчеркнутый
'<span style="text-decoration:line-through">$1</span>', // Зачеркнутый
'<span style="font-size:x-small">$1</span>', // Маленький шрифт
'<span style="font-size:large">$1</span>', // Большой шрифт
'<span style="color:red">$1</span>', // Красный
'<span style="color:green">$1</span>', // Зеленый
'<span style="color:blue">$1</span>', // Синий
'<span style="color:$1">$2</span>', // Цвет шрифта
'<span style="background-color:$1">$2</span>', // Цвет фона
'<span class="quote" style="display:block">$2</span>', // Цитата
'<span class="bblist">$1</span>', // Список
'<div><div class="spoilerhead" style="cursor:pointer;" onclick="var _n=this.parentNode.getElementsByTagName(\'div\')[1];if(_n.style.display==\'none\'){_n.style.display=\'\';}else{_n.style.display=\'none\';}">$1 (+/-)</div><div class="spoilerbody" style="display:none">$2</div></div>' // Спойлер
);
return preg_replace($search, $replace, $var);
}думаю тут и так ясно как добавить и тд)