Masz 2 opcje:
1. W bazie trzymać tylko nieprzerobiony tekst czyli:
[b]tralala[/b]
i przy wyświetlaniu parsować do html
2. W bazie trzymać sparsowany i niesparsowany tekst w dwóch polach w tabeli czyli
tab1 = [b]tralala[/b]
tab2 =<b>tralala</b>
i przy edycji wyświetlać tekst niesparsowany, a po zapisie zmieniać obie wartości w tablicy. Przy wyświetlaniu podawać już tekst przerobiony.
Oba wyjścia mają zalety i wady:
1. Mniej zajmuje, mniej kłopotliwa edycja, bardziej obciążające wyświetlanie
2. Więcej zajmuje(ponad 2 razy), bardziej kłopotliwa edycja (niedużo), mniej obciążające wyświetlanie
Istnieje jeszcze 3 opcja, parsować przy edycji kod html do bbcode na zasadzie:
$tresc = preg_replace("#\<b\>(.*?)\</b\>#si",'[.b]\\1[/b]',$tresc);
Ale to byłoby dość dzikie