• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ob_get_flush()

    (PHP 4 >= 4.3.0, PHP 5, PHP 7)

    刷出(送出)缓冲区内容,以字符串形式返回内容,并关闭输出缓冲区。

    说明

    ob_get_flush(void): string

    ob_get_flush()刷出(送出)缓冲区内容,以字符串形式返回内容,并关闭输出缓冲区。

    Note:这个函数与ob_end_flush()相似,不同的是本函数还会以字符串形式返回缓冲区内容。

    返回值

    返回输出缓冲区的内容;或者是,如果没有起作用的输出缓冲区,返回FALSE

    范例

    Example #1ob_get_flush()example

    <?php
    //using output_buffering=On
    print_r(ob_list_handlers());
    //save buffer in a file
    $buffer = ob_get_flush();
    file_put_contents('buffer.txt', $buffer);
    print_r(ob_list_handlers());
    ?>
    

    以上例程会输出:

    Array
    (
        [0] => default output handler
    )
    Array
    (
    )
    

    参见

    Hi,
    this is just to add a behavior that I haven't understud at first place.
    ob_get_flush actually returns the content of the buffer as a text but also it sends the buffer back to the browser so that it's displayed on user screen.
    Use ob_get_clean if you do not want the buffer to be send to the user
    Correction to previous post: ob_get_clean() is better, ie:
    <?php
    // start generating html
    $html = '<html><head>'; // etc
    // start output buffering
    ob_start();
    // call function which outputs immediately
    print_menu();
    // append this to $html and empty buffer
    $html .= ob_get_clean();
    ?>
    
    I found this function is useful for storing output instead of displaying it. For example, I wanted to use an old function which echoed the ouput but I wanted it in a variable, not outputted immediately. Here's how:
    <?php
    // start generating html
    $html = '<html><head>'; // etc
    // start output buffering
    ob_start();
    // call function which outputs immediately
    print_menu();
    // append this to $html
    $html .= ob_get_flush();
    // empty output buffer
    ob_clean();
    ?>
    
    I don't know how exactly this works, but if you call this function, PHP would behave as if headers have been sent (even though the output has gone to a string).
    This means that you can't call this function, and then call setcookie for example.
    This was verified by trial and error