echo $begrüßung;
Aber ich fürchte, daß ich hier einen gewaltigen Denkfehler in meinem Ansatz habe
Das denke ich auch. Ich gehe mal, wenn du erlaubst, nicht weiter auf das konkrete Problem ein.
Mein Ausdruck sagt doch: suche ein <foo ...>...., dem bis zum Ende des Textes kein </foo> folgt.
Vom Gedanken her, soweit so einfach. Viel zu einfach. Was ist, wenn zwischendrin ein weiteres <foo> geöffnet wird oder unerlaubte Verschachtelungen auftauchen (<b><i></b></i>)? Sowas kann man sicherlich auch noch mit einem regulären Ausdruck abfangen, aber der wird bestimmt ziemlich unhandlich. Mit einem Mustererkenner kann man eine Menge machen, aber irgendwann ist ein Parser besser geeignet.
Ich denke, du kommst besser, wenn du Christian Seilers BBCode-Parserklasse verwendest oder zumindest nach seinem Prinzip vorgehst. (Du hast zwar "richtigen" HTML-Code und keinen BBCode, aber das sollte sich problemlos umschreiben lassen.)
echo "$verabschiedung $name";