如何将require语句的输出转换为php中的字符串

时间:2011-07-15 10:21:57

标签: php require

我正在与一个大型团队合作,并且我正在制作返回html代码的函数,并且我回应这些函数的结果以获得最终页面。问题是,我需要一些由团队其他成员开发的代码,我需要它是一个字符串,但代码可以作为一个php文件,我应该包含或要求在我的页面内。

由于我没有编写ht; ml页面,而是生成该代码的函数,我需要将require语句的结果html转换为字符串,以将其连接到我的函数生成的代码。

有没有办法评估require并将其结果连接到我的字符串?

我已经尝试了函数eval(),但没有工作,并阅读了一些关于get_the_content()的事情,但它也没有工作。我不知道我是否需要导入一些东西,我认为它与wordpress有关,我使用原始的php。

感谢您的帮助! =)

3 个答案:

答案 0 :(得分:10)

尝试ob _...()系列函数。例如:

<?php

    function f(){
        echo 'foo';
    }
    //start buffering output. now output will be sent to an internal buffer instead of to the browser.    
    ob_start();

    //call a function that echos some stuff
    f();

    //save the current buffer contents to a variable
    $foo = ob_get_clean();

    echo 'bar';
    echo $foo;

    //result: barfoo

?>

如果你想把一个include的echo结果放到一个变量中,你可以这样做:

//untested
function get_include($file){
    ob_start();
    include($file);
    return ob_get_clean();
}

或者如果你想将函数调用的echo结果放入变量中,你可以这样做:

//untested
//signature: get_from_function(callback $function, [mixed $param1, [mixed $param2, ... ]])
function get_from_function($function){
    $args = func_get_args();
    shift($args);
    ob_start();
    call_user_func_array($function,$args);
    return ob_get_clean();
}

答案 1 :(得分:2)

取决于其他文件的工作方式......

  1. 如果可以将其他文件更改为返回值,那么您应该使用:

    $content = require 'otherfile';
    
  2. 如果其他文件只是使用echo或其他方式直接打印,请使用:

    ob_start();
    require 'otherfile';
    $content = ob_get_clean();
    

答案 2 :(得分:0)

您可以接收包含include或require的字符串,但在添加return语句之前必须更新这些文件。

要包含的文件应返回此结果

<?php

$var = 'PHP';

return $var;

?>

您可以通过包含该文件

来接收$ var数据
$foo = include 'file.php';
echo $foo; // will print PHP

Documentation section