Language
日本語
English

Caution

JavaScript is disabled in your browser.
This site uses JavaScript for features such as search.
For the best experience, please enable JavaScript before browsing this site.

PHP Dictionary

  1. Home
  2. PHP Dictionary
  3. ob_start() / ob_get_clean()

ob_start() / ob_get_clean() Since: PHP 4(2000)

Functions for controlling output buffering. Output from echo, print_r(), and similar functions is stored in a buffer and can be processed all at once.

Syntax

// Starts output buffering.
ob_start($callback, $chunk_size, $flags);

// Returns the contents of the buffer. The buffer is kept intact.
ob_get_contents();

// Returns the contents of the buffer and ends buffering.
ob_get_clean();

// Outputs the contents of the buffer and ends buffering.
ob_end_flush();

Function List

FunctionDescription
ob_start($callback)Starts output buffering. All subsequent output is stored in the buffer and not displayed on screen. You can also pass a callback function to transform the buffer contents.
ob_get_contents()Returns the current buffer contents as a string. The buffer is not cleared and remains intact.
ob_get_clean()Returns the buffer contents as a string and ends buffering. Equivalent to calling ob_get_contents() followed by ob_end_clean().
ob_end_flush()Outputs the buffer contents and ends buffering. Use this when you want to send all buffered output to the screen at once.
ob_end_clean()Discards the buffer contents and ends buffering. Nothing is output.
ob_get_level()Returns the current nesting level of output buffering. Returns 0 if buffering is not active.

Sample Code

<?php
// Basic usage of output buffering.
ob_start();
echo "This output is stored in the buffer.";
echo "It has not been displayed on screen yet.";
$content = ob_get_clean(); // Retrieves the buffer contents and ends buffering.
echo mb_strlen($content, "UTF-8") . " characters of output were captured.";

// Capturing var_dump() output as a string.
ob_start();
var_dump(['PHP', 'JavaScript', 'Python']);
$debug = ob_get_clean();
error_log($debug); // Writes the debug info to the log.

// Using output buffering to generate HTML templates.
function render_card($title, $body) {
	ob_start();
	echo '
'; echo '

' . htmlspecialchars($title) . '

'; echo '

' . htmlspecialchars($body) . '

'; echo '
'; return ob_get_clean(); } $html = render_card("Notice", "The site has been relaunched."); echo $html; // Suppressing output before sending a header() redirect. ob_start(); echo "This output will be discarded before the redirect."; ob_end_clean(); // Discards the buffer. header("Location: /login.php"); exit; // Using a callback to transform output. ob_start(function ($buffer) { return mb_strtoupper($buffer); // Converts all output to uppercase. }); echo "hello world"; ob_end_flush(); // Outputs 'HELLO WORLD'.

Overview

ob_start() begins output buffering, storing all subsequent output from echo, print_r(), and similar functions into an in-memory buffer. The buffered output can then be retrieved as a string with ob_get_clean(), or sent to the browser all at once with ob_end_flush().

Common uses for output buffering include capturing var_dump() output as a string, rendering partial HTML templates, and suppressing output before a header() call. In PHP, any output sent before header() or setcookie() causes an error — output buffering lets you avoid this problem.

Buffering can be nested, and you can check the current nesting depth with ob_get_level(). For debug output, see var_dump(). For basic output, see echo / print.

If you find any errors or copyright issues, please .