我想要/包含一个文件并将其内容检索到变量中。
test.php的
<?php
echo "seconds passed since 01-01-1970 00:00 GMT is ".time();
?>
的index.php
<?php
$test=require("test.php");
echo "the content of test.php is:<hr>".$test;
?>
与file_get_contents()
类似,但仍应执行PHP代码。
这可能吗?
答案 0 :(得分:67)
如果您的包含文件返回了变量...
<?php
return 'abc';
...然后你可以把它分配给一个像这样的变量......
$abc = include 'include.php';
否则,请使用输出缓冲。
ob_start();
include 'include.php';
$buffer = ob_get_clean();
答案 1 :(得分:64)
我也遇到过这个问题,尝试类似
的问题<?php
function requireToVar($file){
ob_start();
require($file);
return ob_get_clean();
}
$test=requireToVar($test);
?>
答案 2 :(得分:5)
您可以在附带的文件中写下:
<?php
return 'seconds etc.';
在您所包含的文件中:
<?php
$text = include('file.php'); // just assigns value returned in file
答案 3 :(得分:0)
使用shell_exec("php test.php")
。它返回执行的输出。
答案 4 :(得分:0)
require / include不返回文件的内容。你必须单独调用才能实现你想要做的事情。 击>
修改强>
使用echo
将无法让您按照自己的意愿行事。但是返回文件的内容将按照手册中所述完成工作 - http://www.php.net/manual/en/function.include.php
答案 5 :(得分:0)
我认为eval(file_get_contents('include.php'))
会帮助你。
请记住,您可以在托管上禁用其他执行方式,例如shell_exec。
答案 6 :(得分:0)
只有在需要或包含的php文件返回某些内容(数组,对象,字符串,整数,变量等)时才有可能
$var = require '/dir/file.php';
但是如果它不是php文件而你想评估这个文件的内容,你可以:
<?php
function get_file($path){
return eval(trim(str_replace(array('<?php', '?>'), '', file_get_contents($path))));
}
$var = get_file('/dir/file.php');
答案 7 :(得分:0)
在PHP / 7中,您可以使用自调用匿名函数来完成简单封装,并防止全局范围使用随机全局变量进行污染:
return (function () {
// Local variables (not exported)
$current_time = time();
$reference_time = '01-01-1970 00:00';
return "seconds passed since $reference_time GMT is $current_time";
})();
PHP / 5.3 +的替代语法是:
return call_user_func(function(){
// Local variables (not exported)
$current_time = time();
$reference_time = '01-01-1970 00:00';
return "seconds passed since $reference_time GMT is $current_time";
});
然后您可以照常选择变量名称:
$banner = require 'test.php';
答案 8 :(得分:0)
或许可能是这样的
文件include.php中的:
<?php
//include.php file
$return .= "value1 ";
$return .= time();
在其他一些php文件中(不管这个文件的内容是什么):
<?php
// other.php file
function() {
$return = "Values are: ";
include "path_to_file/include.php";
return $return;
}
返回将如下所示:
Values are: value1, 145635165
关键是,所包含文件的内容与我提供的示例中的函数内容具有相同的范围。