Ответ 1
file.php
ob_start();
include 'otherfile.php';
$string = ob_get_clean();
Можно ли сделать что-то вроде этого?
// 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>
Я знаю, что код не будет работать, но я надеюсь, вы понимаете, что я имею в виду.
file.php
ob_start();
include 'otherfile.php';
$string = ob_get_clean();
$string = file_get_contents('otherfile.php',TRUE);
echo $string
Использование аргумента TRUE для file_get_contents() означает, что он будет искать с использованием пути include, например, normal include или require
Еще одна интересная вещь, которую нужно знать, но ответ SmokeyPHP может быть лучше:
<?php
$var = require 'myfile.php';
myfile.php:
<?php
return 'mystring';
Я думаю, вы уже решили проблему. Я столкнулся с той же проблемой в течение этих дней, и я нашел довольно эффективное решение с использованием функций 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
Надеюсь, что это поможет!
Ура!
Да, вы можете использовать оператор return в файле, а require и includes возвратит возвращаемое значение, но вам нужно будет изменить файл, чтобы сказать что-то более похожее на
<?php
return '<p>Lorem ipsum something</p>';
?>
проверить пример № 5 в разделе документации http://www.php.net/manual/en/function.include.php
Используйте движок шаблонов, например Jinja http://jinja.pocoo.org/docs/
<?php require "otherfile.php";