Включить PHP файл как строку

Можно ли сделать что-то вроде этого?

// file.php
$string = require('otherfile.php');
echo $string;

// otherfile.php
<!DOCTYPE html>
<html>
<head><title>Test</title></head>
<body>
<?php require 'body.php';?>
</body>
</html>

// body.php
<p>Lorem ipsum something</p>

И получить этот вывод?

<!DOCTYPE html>
<html>
<head><title>Test</title></head>
<body>
<p>Lorem ipsum something</p>
</body>
</html>

Я знаю, что код не будет работать, но я надеюсь, вы понимаете, что я имею в виду.

Ответы

Ответ 1

file.php

ob_start();
include 'otherfile.php';
$string = ob_get_clean();

Ответ 2

$string = file_get_contents('otherfile.php',TRUE);
echo $string

Использование аргумента TRUE для file_get_contents() означает, что он будет искать с использованием пути include, например, normal include или require

Ответ 3

Еще одна интересная вещь, которую нужно знать, но ответ SmokeyPHP может быть лучше:

<?php
$var = require 'myfile.php';

myfile.php:

<?php
return 'mystring';

Ответ 4

Я думаю, вы уже решили проблему. Я столкнулся с той же проблемой в течение этих дней, и я нашел довольно эффективное решение с использованием функций eval, file_get_contents и вывода буферизации:

ob_start();
eval('?>' . file_get_contents( $fileToRequire, TRUE ) . '<?php ');
$this->output = ob_get_contents();
ob_end_clean();

Единственное, что вам нужно, это поставить php-код между тегами <?php ?> и не оставлять открытым php-тег открытым.

'? > ' является обязательным, иначе вы получите сообщение об ошибке из функции eval

Надеюсь, что это поможет!

Ура!

Ответ 5

Да, вы можете использовать оператор return в файле, а require и includes возвратит возвращаемое значение, но вам нужно будет изменить файл, чтобы сказать что-то более похожее на

<?php
    return '<p>Lorem ipsum something</p>';
?>

проверить пример № 5 в разделе документации http://www.php.net/manual/en/function.include.php

Ответ 7

<?php require "otherfile.php";