Manuel PHP
Précédent |  | Suivant

# ob_start

(PHP 4 )

ob_start -- Enclenche la bufferisation de sortie

## Description

void ob_start ( [string output_callback])

ob_start() démarre la bufferisation de sortie. Tant qu'elle est enclenchée, aucune donnée, hormis les en-têtes, n'est envoyée au navigateur, mais temporairement mise en buffer.

Le contenu de ce buffer peut être copié dans une chaîne avec la fonction ob_get_contents(). Pour afficher le contenu de ce buffer, utilisez ob_end_flush(). Au contraire, ob_end_clean() effacera le contenu de ce buffer.

Une fonction optionnelle de callback peut être spécifiée en troisième argument. ob_start() prend une chaîne comme paramètre, et retourne une chaîne. Elle sera appelée par ob_end_flush() ou lorsque le buffer sera envoyé au navigateur à la fin du script et recevra le contenu du buffer de sortie. Lorsque la fonction `output_callback` est appelée, elle doit retourner un nouveau contenu pour le buffer de sortie : celui-ci sera envoyé au navigateur.

> Note : En PHP 4.0.4, ob_gzhandler() a été introduit pour faciliter l'envoi de fichier compressé avec gz aux navigateurs web qui supportent les pages compressées. ob_gzhandler() détermine le type d'encodage accepté par un navigateur, et retourne le contenu le plus adéquat.

Les buffers de sortie sont gérés par pile, c'est-à-dire que vous pouvez appeler plusieurs fois ob_start() simultanément. Assurez-vous que vous appelez ob_end_flush() suffisamment souvent. Si plusieurs fonctions de callback sont actives, les contenus seront filtrés séquentiellement, dans l'ordre d'emboîtement.

Exemple 1. Exemple de callback avec fonction utilisateur
    <?php
    function callback($buffer) {
      // remplace toutes les pommes par des oranges
      return (ereg_replace("pommes de terre", "carottes", $buffer));
    }
    ob_start("callback");
    ?>
    <html>
    <body>
    <p>C'est comme comparer des carottes et des pommes de terre.
    </body>
    </html>
    <?php
     ob_end_flush();
    ?>

va afficher :

    <html>
    <body>
    <p>C'est comme comparer des carottes et des carottes.
    </body>
    </html>

Voir aussi ob_get_contents(), ob_end_flush(), ob_end_clean(), ob_implicit_flush() et ob_gzhandler().

Précédent | Sommaire | Suivant
ob_implicit_flush | Niveau supérieur | Overload