Как вы определяете PHP как строку?

Я пытался:

$test = include 'test.php'; 

Но это только что включало файл обычно

Solutions Collecting From Web of "Как вы определяете 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 .