php - remove - str_replace
Obtenga los resultados de una inclusiĆ³n en una cadena en PHP? (4)
También puede hacer que el archivo incluido devuelva el resultado, en lugar de imprimirlo. Entonces puedes agarrarlo en una variable, tal como lo haces en tu segundo ejemplo.
<?php
return ''Hello world.'';
?>
Digamos que el archivo test.php se ve así:
<?php
echo ''Hello world.'';
?>
Quiero hacer algo como esto:
$test = include(''test.php'');
echo $test;
// Hello world.
¿Alguien puede señalarme el camino correcto?
Editar:
Mi objetivo original era extraer el código PHP entremezclado con HTML de una base de datos y procesarlo. Esto es lo que terminé haciendo:
// Go through all of the code, execute it, and incorporate the results into the content
while(preg_match(''/</?php(.*?)/?>/ims'', $content->content, $phpCodeMatches) != 0) {
// Start an output buffer and capture the results of the PHP code
ob_start();
eval($phpCodeMatches[1]);
$output = ob_get_clean();
// Incorporate the results into the content
$content->content = str_replace($phpCodeMatches[0], $output, $content->content);
}
Usar el buffer de salida es la mejor opción.
ob_start();
include ''test.php'';
$output = ob_get_clean();
PD: Recuerde que puede anidar los búferes de salida al contenido de su corazón, si es necesario.
test.php
<?php
return ''Hello World'';
?>
<?php
$t = include(''test.php'');
echo $t;
?>
Siempre que el archivo incluido tenga una declaración de devolución, funcionará.
$test = file_get_contents(''test.php'');
echo $test; //Outputs "Hello world.";