Si può fare questo con output buffering:
function include2string($file) {
ob_start();
include($file);
return ob_get_clean();
}
@DaveRandom sottolinea (correttamente) che la questione con avvolgendo questo in una funzione è che lo script ($ file) non avrà accesso ai variabile definita globalmente. Questo potrebbe non essere un problema per molti script inclusi dinamicamente, ma se è un problema per te allora questa tecnica può essere usata (come altri hanno mostrato) al di fuori di un wrapper di funzione.
** Importazione delle variabili Una cosa che si può fare è aggiungere un insieme di dati che si desidera esporre al proprio script come variabili. Pensa a come passare i dati a un modello.
function include2string($file, array $vars = array()) {
extract($vars);
ob_start();
include($file);
return ob_get_clean();
}
Si potrebbe chiamarla in questo modo:
include2string('foo.php', array('key' => 'value', 'varibleName' => $variableName));
e ora $key
e $variableName
sarebbe visibile all'interno il file foo.php.
È inoltre possibile fornire un elenco di variabili globali da "importare" per il proprio script, se ciò risulta più chiaro.
function include2string($file, array $import = array()) {
extract(array_intersect_key($GLOBALS, array_fill_keys($import, 1)));
ob_start();
include($file);
return ob_get_clean();
}
E si potrebbe chiamare, fornendo un elenco delle variabili globali gradireste esposti allo script:
$foo='bar';
$boo='far';
include2string('foo.php', array('foo'));
foo.php
dovrebbe essere in grado di vedere foo
, ma non boo
.
@safarov la mia ipotesi è che non è intenzione di valutare la variabile –
penso che non sostituirà $ una nel file test.php. fammi controllare. – ppp