Я пытался:
$test = include 'test.php';
Но это только что включало файл обычно
Вы хотите посмотреть на функции буферизации вывода.
//get anything that's in the output buffer, and empty the buffer $oldContent = ob_get_clean(); //start buffering again ob_start(); //include file, capturing output into the output buffer include "test.php"; //get current output buffer (output from test.php) $myContent = ob_get_clean(); //start output buffering again. ob_start(); //put the old contents of the output buffer back echo $oldContent;
РЕДАКТИРОВАТЬ:
Как указывает Джереми, стек буферов вывода. Таким образом, вы могли бы теоретически просто сделать что-то вроде:
<?PHP function return_output($file){ ob_start(); include $file; return ob_get_clean(); } $content = return_output('some/file.php');
Это должно быть эквивалентно моему более подробному оригинальному решению.
Но я не потрудился проверить это.
Попробуйте что-нибудь вроде:
ob_start(); include('test.php'); $content = ob_get_clean();
вob_start(); include('test.php'); $content = ob_get_clean();
Попробуйте file_get_contents()
.
Эта функция похожа на
file()
, за исключением того, чтоfile_get_contents()
возвращает файл в строке.
Решение № 1: Используйте include (работает как функция): [Мое лучшее решение]
Файл index.php:
<?php $bar = 'BAR'; $php_file = include 'included.php'; print $php_file; ?>
Файл included.php:
<?php $foo = 'FOO'; return $foo.' '.$bar; ?> <p>test HTML</p>
Это приведет к выводу FOO BAR
, но Примечание : работает как функция, поэтому RETURN передает содержимое обратно переменной ( <p>test HTML</p>
будет потерян в приведенном выше)
Решение №2: op_buffer ():
Файл index.php:
<?php $bar = 'BAR'; ob_start(); include 'included.php'; $test_file = ob_get_clean(); //note on ob_get_contents below print $test_file; ?>
Файл included.php:
<?php $foo = 'FOO'; print $foo.' '.$bar; ?> <p>test HTML</p>
Если вы используете ob_get_contents()
он выведет FOO BAR<p>test HTML</p>
TWICE , убедитесь, что вы используете ob_get_clean()
Решение №3: file_get_contents ():
Файл index.php:
<?php $bar = 'BAR'; $test_file = eval(file_get_contents('included.php')); print $test_file; ?>
Файл included.php:
$foo = 'FOO'; print $foo.' '.$bar;
Это приведет к выводу FOO BAR
, но Примечание . Include.php не должен иметь теги открытия и закрытия <?php
поскольку вы запускаете его через eval ()
Другие ответы по неизвестным мне причинам не вполне соответствуют правильному решению.
Я предлагаю использовать буфер, но вы должны получить содержимое, а затем очистить буфер до конца страницы, иначе он будет выведен. Если вы хотите использовать вывод из включенного файла, вы должны использовать op_get_contents()
, который вернет строку содержимого буфера.
Вам также не нужно зацикливаться на включениях, поскольку каждый будет просто добавлять в буфер (если вы не очистите его в первую очередь).
Поэтому вы можете использовать следующее:
ob_start(); include_once('test.php'); include_once('test2.php'); $contents = ob_get_contents(); ob_end_clean();
Надеюсь это поможет.
Вы можете использовать функцию file_get_contents
.