Hack Alerta! Puede hacer la evaluación del PHP usted mismo con un poco de hackeo usando preg_replace_callback
para buscar y reemplazar los bloques de PHP.
function evalCallback($matches)
{
// [0] = <?php return returnOrEcho("hi1");?>
// [1] = <?php
// [2] = return returnOrEcho("hi1");
// [3] = ?>
return eval($matches[2]);
}
function evalPhp($file)
{
// Load contents
$contents = file_get_contents($file);
// Add returns
$content_with_returns = str_replace(
"returnOrEcho"
,"return returnOrEcho"
,$contents);
// eval
$modified_content = preg_replace_callback(
array("|(\<\?php)(.*)(\?\>)|"
,"evalCallback"
,$content_with_returns);
return $modified_content;
}
Usted tendría que modificar el archivo PHP que está incluyendo a utilizar una función returnOrEcho
de modo que pueda ser sobrecargado para este caso y el caso normal. En este caso, quiere return
para que sea recogido por eval
de la manera que desee, pero el caso normal es echo
sin devolución.
Así que para este caso, debe definir:
function returnOrEcho($str)
{
return $str;
}
y para el caso normal, debe definir:
function returnOrEcho($str)
{
echo $str;
}
En su archivo PHP incluido (o archivo de vista) que tendría algo así como esto:
<?php returnOrEcho("hi1");?>
<?php returnOrEcho("hi3"."oo");?>
<?php returnOrEcho(6*7);?>
no pude conseguir preg_replace_callback
línea de devolución de llamada a trabajar por lo que utilizó un función separada, pero hay un ejemplo de cómo hacerlo: preg_replace_callback() - Calback inside current object instance.
¿Por qué no utilizar el buffer de salida? – Greg