Wie gehts das?
Sagt dir http://de3.php.net/manual/de/function.preg-replace-callback.php.
Du erstellst einfach eine Funktion, die einen (!) Parameter vorsieht à la my_function($match) und rufst diese per preg_replace_callback wie im Manual beschrieben auf.
Mit $match steht dir dann innerhalb von my_function ein Array zur Verfügung das alle von dir gefundenen Schlüssel enthält. Dein return Wert wird dann auch von der callback-Funktion zurückgegeben.