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.