можно ли сделать что-то подобное?
// 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 или 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";