将PHP文件包含为字符串

时间:2012-01-05 23:03:37

标签: php include

是否可以制作这样的东西?

// 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>

我知道代码不起作用,但我希望你理解我的意思。

8 个答案:

答案 0 :(得分:48)

file.php

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

答案 1 :(得分:11)

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

对file_get_contents()使用TRUE参数意味着它将使用include路径进行搜索,就像普通的include或require

一样

答案 2 :(得分:3)

另一个很酷的事情要知道,但SmokeyPHP的答案可能会更好:

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

myfile.php:

<?php
return 'mystring';

答案 3 :(得分:1)

我猜你已经解决了这个问题。在这些日子里我遇到了同样的问题,我找到了一个使用eval,file_get_contents和输出缓冲函数的漂亮解决方案:

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

你必须关心的唯一一件事是将php代码放在标签<?php ?>之间,不要让任何php标签打开。

“&GT;?是强制性的,否则你将从eval函数中得到错误

希望它有所帮助!

干杯!

答案 4 :(得分:0)

是的,您可以在文件中使用return语句,require和includes将返回返回的值,但您必须修改该文件以更像

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

检查包含文档下的示例#5 http://www.php.net/manual/en/function.include.php

答案 5 :(得分:0)

使用模板引擎,例如Jinja http://jinja.pocoo.org/docs/

答案 6 :(得分:0)

我需要一个针对Joomla和dompdf的解决方案,我找到了这个解决方案

ob_start();
require_once JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'file.php';
$html = ob_get_clean();

仅具有require_once的用户才能在加载的脚本中使用Joomla中的所有功能。 file.php是一个重命名为.php的.html文件,并在其中添加了php代码。

答案 7 :(得分:-2)

<?php require "otherfile.php";