Complementando el comentario de GatorV, al usar expresiones regulares, deberías usar el modificador
e (PREG_REPLACE_EVAL), el cual solo funciona para preg_replace.
http://cl.php.net/manual/en/function.preg-replace.php
El ejemplo #4, te soluciona el problema.