danke, das hat aber leider einen fehler erzeugt. 
habs nun erst mal so gemacht: 
preg_match("/{tpl name=\"(.*?)\"}(.*?){\/tpl}/", "hallo {tpl name=\"test\"}asd{/tpl}", $string);
wenn ich jetzt das pattern auf folgenden string anwende:
$string = " viel text {tpl ...}  test {/tpl} ";
ist es jetzt auch möglich das pattern aus $string zu entfernen? mit str_replace würde das natürlich gehen, aber geht das auch gleich mit preg_match`?
----------------------
EDIT: okay, das hab ich jetzt erst mal gelöst. regex nervt schon wieder. 

 ich möchte die zeichenkette nur matchen wenn am Anfang kein { steht und am Ende kein }
praktisch:   [^{]  (.*?) [^}] 
hat mir jemand auf Anhieb ne Lösung?