要求/包含变量

时间:2011-05-10 10:02:16

标签: php

我想要/包含一个文件并将其内容检索到变量中。

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代码。 这可能吗?

9 个答案:

答案 0 :(得分:67)

如果您的包含文件返回了变量...

include.php

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

关键是,所包含文件的内容与我提供的示例中的函数内容具有相同的范围。