Can you render a PHP file into a variable?

前端 未结 5 1920
孤城傲影
孤城傲影 2020-12-28 08:51

If I have a hello.php file like this:

Hello, !

I would like to do something like this in some php code:

         


        
相关标签:
5条回答
  • 2020-12-28 09:21

    http://www.devshed.com/c/a/PHP/Output-Buffering-With-PHP/

    Output buffering might be the place to start.

    0 讨论(0)
  • 2020-12-28 09:24

    As Gumbo said you have to check for the $file variable, its a subtle bug that has already bitten me. I would use func_get_arg( i ) and have no variables at all, and a minor thing, i would use require.

    function renderPhpToString( )
    {
        if( is_array( func_get_arg(1) ) ) {
            extract( func_get_arg(1) );
        }
        ob_start();
        require func_get_arg( 0 );
        return ob_get_clean();
    
    }
    
    0 讨论(0)
  • 2020-12-28 09:35

    You could use some function like this:

    function renderPhpToString($file, $vars=null)
    {
        if (is_array($vars) && !empty($vars)) {
            extract($vars);
        }
        ob_start();
        include $file;
        return ob_get_clean();
    }
    

    It uses the output buffer control function ob_start() to buffer the following output until it’s returned by ob_get_clean().

    Edit    Make sure that you validate the data passed to this function so that $vars doesn’t has a file element that would override the passed $file argument value.

    0 讨论(0)
  • 2020-12-28 09:39

    You can do this with output buffering, but might be better of using one of the many template engines.

    0 讨论(0)
  • 2020-12-28 09:46

    regarding passing $vars = array('file' => '/etc/passwd');, you could use extract($vars, EXTR_SKIP);

    0 讨论(0)
提交回复
热议问题