Возможный дубликат:
Выполните файл 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