如何将包含内容作为字符串?

时间:2012-04-13 15:55:32

标签: php include

  

可能重复:
  Execute a PHP file, and return the result as a string
  PHP capture print/require output in variable

我正在尝试将include的内容添加到字符串中。这可能吗?

例如,如果我有一个test.php文件:

echo 'a is equal to '.$a;

我需要一个函数,比如说include_to_string包含test.php并返回字符串输入的内容。

类似的东西:

$a = 4;
$string = include_to_string(test.php); // $string = "a is equal to 4"

4 个答案:

答案 0 :(得分:31)

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

我认为是你想要的。请参阅output buffering

答案 1 :(得分:5)

ob_start();
include($file);
$contents = ob_get_contents(); // data is now in here
ob_end_clean();

答案 2 :(得分:3)

您可以使用output buffering执行此操作:

function include2string($file) {
    ob_start();
    include($file);
    return ob_get_clean();
}

@DaveRandom指出(正确地)在函数中包装它的问题是你的脚本($ file)将无法访问全局定义的变量。对于动态包含的许多脚本而言,这可能不是问题,但如果它对您来说是个问题,则可以在函数包装器之外使用此技术(正如其他人所示)。

**导入变量 您可以做的一件事是添加一组您希望作为变量公开给脚本的数据。可以把它想象成将数据传递给模板。

function include2string($file, array $vars = array()) {
    extract($vars);
    ob_start();
    include($file);
    return ob_get_clean();
}

你会这样称呼它:

include2string('foo.php', array('key' => 'value', 'varibleName' => $variableName));

现在{f}。{1}}和$key会在您的foo.php文件中显示。

如果您觉得更清楚,您还可以为脚本“导入”提供全局变量列表。

$variableName

你会调用它,提供你想要暴露给脚本的全局变量列表:

function include2string($file, array $import = array()) {
    extract(array_intersect_key($GLOBALS, array_fill_keys($import, 1)));
    ob_start();
    include($file);
    return ob_get_clean();
}

$foo='bar'; $boo='far'; include2string('foo.php', array('foo')); 应该可以看到foo.php,但不能foo

答案 3 :(得分:0)

您也可以在下面使用此功能,但我建议您使用以上答案。

// How 1th
$File = 'filepath';
$Content = file_get_contents($File);

echo $Content;

// How 2th  
function FileGetContents($File){
    if(!file_exists($File)){
        return null;
    }

    $Content = file_get_contents($File);
    return $Content;
}

$FileContent = FileGetContents('filepath');
echo $FileContent;

PHP手册中的功能:file_get_contents