¿Cómo conseguir incluir contenidos como una cadena?

Posible duplicado:
Ejecute un archivo PHP y devuelva el resultado como una cadena
Impresión de captura PHP / requiere salida en variable

Estoy tratando de obtener el contenido de una cadena de inclusión. ¿Es eso posible?

Por ejemplo, si tengo un archivo test.php:

 

Necesito una función, por ejemplo, include_to_string para incluir el test.php y devolver lo que se generará en una cadena.

Algo como:

  

  

Creo que es lo que quieres Ver el buffering de salida .

 ob_start(); include($file); $contents = ob_get_contents(); // data is now in here ob_end_clean(); 

Puedes hacer esto con buffer de salida :

 function include2string($file) { ob_start(); include($file); return ob_get_clean(); } 

@DaveRandom señala (correctamente) que el problema al envolver esto en una función es que su script ($ file) no tendrá acceso a la variable definida globalmente. Puede que esto no sea un problema para muchos scripts incluidos dinámicamente, pero si es un problema para usted, entonces esta técnica se puede usar (como otros han demostrado) fuera de un contenedor de funciones.

** Importar variables Una cosa que puede hacer es agregar un conjunto de datos que le gustaría exponer a su secuencia de comandos como variables. Piense en ello como pasar datos a una plantilla.

 function include2string($file, array $vars = array()) { extract($vars); ob_start(); include($file); return ob_get_clean(); } 

Lo llamarías de esta manera:

 include2string('foo.php', array('key' => 'value', 'varibleName' => $variableName)); 

y ahora $key y $variableName serían visibles dentro de su archivo foo.php.

También puede proporcionar una lista de variables globales para “importar” para su secuencia de comandos si eso le parece más claro.

 function include2string($file, array $import = array()) { extract(array_intersect_key($GLOBALS, array_fill_keys($import, 1))); ob_start(); include($file); return ob_get_clean(); } 

Y lo llamarías, proporcionando una lista de los globales que te gustaría que se expusieran al guión:

 $foo='bar'; $boo='far'; include2string('foo.php', array('foo')); 

foo.php debería poder ver foo , pero no boo .

También puede usar esto a continuación, pero recomiendo la respuesta anterior.

 // How 1th $File = 'filepath'; $Content = file_get_contents($File); echo $Content; // How 2th function FileGetContents($File){ if(!file_exists($File)){ return null; } $Content = file_get_contents($File); return $Content; } $FileContent = FileGetContents('filepath'); echo $FileContent; 

Función en el manual de PHP: file_get_contents