Я пробовал:
$test = include 'test.php';
Но это просто включил файл обычно
Я пробовал:
$test = include 'test.php';
Но это просто включил файл обычно
Вам нужно посмотреть на функции буферизации вывода.
//get anything that 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;
EDIT:
Как указывает Джереми, стек выходных буферов. Таким образом, вы могли бы теоретически просто сделать что-то вроде:
<?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();
Попробуйте 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()
, который вернет строку содержимого буфера.
Вам также не нужно перебирать элементы include, поскольку каждый будет просто добавлять в буфер (если вы не очистите его в первую очередь).
Таким образом, вы можете использовать следующее:
ob_start();
include_once('test.php');
include_once('test2.php');
$contents = ob_get_contents();
ob_end_clean();
Надеюсь, что это поможет.
Вы можете использовать функцию file_get_contents
.