php preg_replace coincide con

¿Cómo se accede a las coincidencias en preg_replace como una variable utilizable? Aquí está mi código de muestra:

<?php
$body = <<<EOT
Thank you for registering at <!-- site_name -->

Your username is: <!-- user_name -->

<!-- signature -->
EOT;

$value['site_name'] = "www.thiswebsite.com";
$value['user_name'] = "user_123";

$value['signature'] = <<<EOT
live long and prosper
EOT;

//echo preg_replace("/<!-- (#?\w+) -->/i", "[$1]", $body);
echo preg_replace("/<!-- (#?\w+) -->/i", $value[$1], $body);
?>

Sigo recibiendo el siguiente mensaje de error:

Error grave: error de sintaxis, inesperado '!$2$!#39;, esperando T_STRING o T_VARIABLE en la línea 18

La línea remarcada arriba con "[$ i]" funciona bien cuando la variable de coincidencia está entre comillas. ¿Me falta un poco de sintaxis?

Respuestas a la pregunta(2)

Su respuesta a la pregunta