Уменя вот такой код работает
function bbcode($str) {
$bbc = array(
'/\[hr\]/is' => '<hr />',
'/\[b\](.*?)\[\/b\]/is' => '<strong>$1</strong>',
'/\[i\](.*?)\[\/i\]/is' => '<em>$1</em>',
'/\[u\](.*?)\[\/u\]/is' => '<u>$1</u>',
/* ... остальные теги */
);
$str = preg_replace(array_keys($bbc), array_values($bbc), $str);
$str = $str.'<br style="clear:both;" />';
return $str;
}
//эмуляция выполнения
//вывожу преобразованный bbcode в html код
//не забудте экранировать символы
echo bbcode($_POST['new_text']);