Usted puede hacer esto con output buffering:
function include2string($file) {
ob_start();
include($file);
return ob_get_clean();
}
@DaveRandom señala (correctamente) que el problema con esta envolviendo en una función es que el script (archivo $) no tendrá acceso a 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 utilizar (como otros han demostrado) fuera de un contenedor de funciones.
** Importación de 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();
}
Se podría llamar de esta manera:
include2string('foo.php', array('key' => 'value', 'varibleName' => $variableName));
y ahora $key
y $variableName
sería visible dentro de su archivo foo.php.
También podría 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 ustedes lo llaman, que proporciona una lista de las variables globales que le gustaría expuestos a la secuencia de comandos:
$foo='bar';
$boo='far';
include2string('foo.php', array('foo'));
foo.php
debería ser capaz de ver foo
, pero no boo
.
@safarov mi conjetura es que no va a evaluar su variable de –
creo que no va a sustituir un $ en el archivo test.php. dejame revisar. – ppp