Ich würd dafür die BB-Code-Klasse von Christian Seiler benutzen, damit kann man auch verschiedene Tagtypen und ihre Verschachtelung definieren. Ich selber benutz aber für die Seite an der ich gerade arbeite die Version mit str_replace(), weil nur die Admins Zugriff haben und daher niemand absichtlich Tags offen lässt