PHP | ob_start() Function

Let’s take a quick recap. PHP is an interpreted language thus each statement is executed one after another, therefore PHP tends to send HTML to browsers in chunks thus reducing performance. Using output buffering the generated HTML gets stored in a buffer or a string variable and is sent to the buffer to render after the execution of the last statement in the PHP script.

But Output Buffering is not enabled by default. In order to enable the Output Buffering one must use the ob_start() function before any echoing any HTML content in a script.

Syntax:



bool ob_start ()

Parameters: The function can accept a bunch of optional parameters as follows:

  • Callback function: This is an optional parameter that expects a function that takes the contents of the output buffer and returns a string that is to be sent to the browser for rendering. The callback function is generally used for compressing the HTML content.
  • Chunk size: This is another optional parameter that sets the output buffer size of provided size and outputs as soon as the buffer is either full or exceeded.
  • Flags: This is another optional parameter that accepts a bitmask to control the operations that can be implemented on the output buffer. This parameter is passed to restrict access. The Default permissions gives access to clean, flush and removal of the buffer.

Return Type: This function returns TRUE on success otherwise FALSE.

Below program illustrates the working of ob_start() in PHP:

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
  
// PHP code to illustrate the working
//  of ob_start() Function 
  
function callback($buffer){
    // Return Everything in CAPS.
    return (strtoupper($buffer));
}
  
ob_start("callback");
echo "Hello Geek!";
ob_end_flush();
  
?>

chevron_right


Output:

HELLO GEEK!

Important points to note:

  • Enables Output Buffering.
  • Output Buffering flags can be of four types PHP_OUTPUT_HANDLER_CLEANABLE(only clean), PHP_OUTPUT_HANDLER_FLUSHABLE(only flush), PHP_OUTPUT_HANDLER_REMOVABLE(only remove), PHP_OUTPUT_HANDLER_STDFLAGS(allowed every operation).
  • Output buffers are stackable, thus nested ob_start() methods are allowed and works as desired if they are closed/flushed sequentially.

Reference:
http://php.net/manual/en/function.ob-start.php



My Personal Notes arrow_drop_up

FullStack Developer of six websites Verified Freelancer with 19 complete projects and 4.9 rating Modest Lifelong Learner

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.