要求/包含变量

use*_*379 52 php

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

test.php的

<?php
echo "seconds passed since 01-01-1970 00:00 GMT is ".time();
?>
Run Code Online (Sandbox Code Playgroud)

的index.php

<?php
$test=require("test.php");
echo "the content of test.php is:<hr>".$test;
?>
Run Code Online (Sandbox Code Playgroud)

喜欢file_get_contents()但它应该仍然执行PHP代码.这可能吗?

use*_*er6 70

我曾经有过这个问题,尝试类似的东西

<?php
function requireToVar($file){
    ob_start();
    require($file);
    return ob_get_clean();
}
$test=requireToVar($test);
?>
Run Code Online (Sandbox Code Playgroud)

  • 错误!`ob_start()`启用输出缓冲,`ob_clean()` - 只是清理缓冲区并使输出缓冲开启,这是错误的!要关闭它,请使用`ob_end_clean()`而不是`ob_clean()`.或者,您可以使用`ob_get_clean()`而不是`ob_get_contents()`和`ob_end_clean()`.所以函数的主体看起来像`ob_start(); 要求$ file; return ob_get_clean();`. (11认同)
  • 另外要知道:ob_start是可堆叠的,因此在已经在缓冲输出块中的代码中使用此方法是完全安全的. (6认同)
  • "require"也不是一个函数,因此括号中有多余的. (2认同)

ale*_*lex 70

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

include.php

<?php
return 'abc';
Run Code Online (Sandbox Code Playgroud)

...然后你可以将它分配给一个变量......

$abc = include 'include.php';
Run Code Online (Sandbox Code Playgroud)

否则,使用输出缓冲.

ob_start();
include 'include.php';
$buffer = ob_get_clean();
Run Code Online (Sandbox Code Playgroud)


Tad*_*eck 5

您可以在包含的文件中写入:

<?php
    return 'seconds etc.';
Run Code Online (Sandbox Code Playgroud)

在您包含的文件中:

<?php
    $text = include('file.php'); // just assigns value returned in file
Run Code Online (Sandbox Code Playgroud)

  • 对于将文件包含到变量中的几种类型的要求,这是最佳解决方案. (3认同)