How to clear previously echoed items in PHP

前端 未结 5 1016
一生所求
一生所求 2020-12-02 14:21

In php, is there any way to clear/remove all previously echoed or printed items?

For example:



        
相关标签:
5条回答
  • 2020-12-02 14:42

    while @monoxide is right, its better to find more intuitive ways of doing the same. e.g.:

    <?php
    $val_to_print = $a;
    if( $need_to_change==true ) 
        $val_to_print = $b;
    // when you are sure you won't have to change again...
    echo $val_to_print;
    ?>
    

    Cheers,

    jrh

    0 讨论(0)
  • 2020-12-02 14:43

    Ideally, you shouldn't output anything that you don't ultimately want printed. Keep your logic separate from your presentation for less frustration.

    That being said, you can consult the Output Buffering options within PHP.

    0 讨论(0)
  • 2020-12-02 14:47

    If it is debug output and program status information you are worried about maybe trigger_error may be nearer to what you need, such as:

    trigger_error ("Attempting to load report #{$report_id}.", E_USER_NOTICE);
    

    When your script is in production it wont show up any errors as generally they are disabled or logged. It's also best to do fatal errors this way with E_USER_ERROR rather than using die ().

    ob_start ();
    require ($filename);
    $html = ob_get_clean ();
    

    The above will also include a file and give you its contents as a string.

    Caveat: Ditching the buffer will also ditch any error messages thrown up, making debugging (potentially) a nightmare.

    0 讨论(0)
  • 2020-12-02 14:50

    If a hacker let's say has access to your PHP file, he will also be able to remove the statement clearing the output buffer.

    If you are doing this because you are letting your users upload PHP scripts, let me tell you that this is an extremely bad idea.

    In both cases, doing what you are asking for adds 0 security.

    0 讨论(0)
  • 2020-12-02 14:52
    <?php
    
    ob_start();
    echo 'a';
    print 'b';
    
    // some statement that removes all printed/echoed items
    ob_end_clean();
    
    echo 'c';
    
    // the final output is equal to 'c', not 'abc'
    
    ?>
    

    Output buffering functions

    The output buffering functions are also useful in hackery to coerce functions that only print to return strings, ie.

    <?php
    ob_start();
    var_dump($myVar);
    $data = ob_get_clean();
    // do whatever with $data
    ?>
    
    0 讨论(0)
提交回复
热议问题