Как получить содержимое в виде строки?

Возможный дубликат:
Выполните файл PHP и верните результат в виде строки
PHP захват печати / требуется вывод в переменной

Я пытаюсь получить содержимое include в строку. Это возможно?

Например, если у меня есть файл test.php:

<?php echo 'a is equal to '.$a; ?> 

Мне нужна функция, скажем include_to_string, чтобы включить test.php и вернуть то, что будет выводиться внутри в строке.

Что-то вроде:

 <?php $a = 4; $string = include_to_string(test.php); // $string = "a is equal to 4" ?> 

 <?php ob_start(); include 'test.php'; $string = ob_get_clean(); 

Я думаю, это то, что вы хотите. См. Выходную буферизацию .

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

Вы можете сделать это с буферизацией вывода :

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

@DaveRandom указывает (правильно), что проблема с оберткой в ​​функции заключается в том, что ваш скрипт ($ file) не будет иметь доступ к переменной, определенной глобально. Это может быть не проблема для многих сценариев, включенных динамически, но если это проблема для вас, то этот метод может использоваться (как показали другие) вне оболочки функций.

** Импорт переменных. Одна вещь, которую вы можете сделать, – добавить набор данных, которые вы хотели бы представить сценарию в качестве переменных. Подумайте, как передавать данные в шаблон.

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

Вы бы назвали это так:

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

и теперь в вашем файле foo.php будет отображаться $key и $variableName .

Вы также можете предоставить список глобальных переменных для «импорта» для вашего скрипта, если это вам кажется более понятным.

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

И вы бы назвали это, предоставив список глобальных символов, которые вы хотели бы открыть для скрипта:

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

foo.php должен уметь видеть foo , но не boo .

Вы также можете использовать это ниже, но я рекомендую приведенный выше ответ.

 // 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; 

Функция в руководстве PHP: file_get_contents