Bueno ... creo que te vendría mejor usar el buffer de salida de PHP en lugar de aplicar tu eval() directamente.
http://cl.php.net/manual/en/ref.outcontrol.php
Así tendrias tu HTML generado en una variable .. y esa es la que haces el return $html;
Tienes unos ejemplos (en los comentarios de los usuarios) como este .. para hacer lo que supongo estás haciendo:
Código PHP:
$sf = fopen($sourcefile, "r");
$df = fopen($destfile, "w");
ob_start();
while( !feof($sf) )
{
$line = fgets($sf, 4096);
$eval = "echo \"".addslashes($line)."\";";
eval($eval);
$line = ob_get_contents();
fputs($df, stripslashes($line));
}
ob_end_clean();
Sería bueno que viese el código de algún motor de templates .. Fijate en el código que usa NokTemplate .. se trata de usar expresiones regulares aplicadas a la template que lees .. Usar "eval()" no creo que sea lo más óptimo para un motor de templates ...
Un saludo,