Du willst doch einfachen
BBCode parsen, oder? - Dafür gibt es bereits fertige Klassen, die das für dich erledigen. Ich verwende eine, bei der du gleich schon den Parameter extrahiert bekommst und gleichzeitig auf den Inhalt zwischen Start-Tag und End-Tag zugreifen kannst. So hast du wenigstens nicht das Problem, dass in deinem
BBCode falsch verschachtelt wird.
Momentan prüfst du nur auf das Start-Tag. Das Endtag wird bei dir nicht beachtet, was eigentlich nicht richtig ist.
Bernhard
PS: Ich benutze diese Klasse:
http://www.christian-seiler.de/projekte/php/bbcode/.