Position actuelle: Accueil> Derniers articles> Conseils pour combiner ob_list_handlers et ob_get_clean

Conseils pour combiner ob_list_handlers et ob_get_clean

gitbox 2025-05-28

En PHP, le contrôle de la sortie est une caractéristique très pratique, surtout lorsque vous devez manipuler la sortie avant les rendements de la page. ob_list_handlers () est une fonction d'outil liée à la mise en mémoire tampon de sortie PHP. Bien qu'il ne soit pas aussi couramment utilisé que ob_start () et ob_get_clean () , il est très utile lors du débogage et de la compréhension de l'état de pile de sortie actuel.

Cet article vous amènera à comprendre rapidement l'utilisation de ob_list_handlers () et combinera ob_get_clean () pour montrer une astuce pratique.

Qu'est-ce que ob_list_handlers () ?

La fonction ob_list_handlers () est utilisée pour renvoyer tous les gestionnaires de sortie enregistrés dans le tampon de sortie actuel. Ces gestionnaires sont généralement spécifiés par vous ou par le cadre lors de l'appel ob_start () , comme ob_gzhandler .

Le prototype de fonction est le suivant:

 array ob_list_handlers(void)

Exemple 1: Voir le processeur du tampon actuel

 <?php
// Démarrer un gzip Tampon comprimé
ob_start('ob_gzhandler');

// Afficher la liste des processeurs de sortie actuelle
print_r(ob_list_handlers());

// Effacer le tampon
ob_end_clean();
?>

La sortie peut être similaire:

 Array
(
    [0] => ob_gzhandler
)

Cette fonction est très adaptée au débogage, comme si vous n'êtes pas sûr des gestionnaires d'interception ou de traitement dans des applications complexes.

Utilisez ob_get_clean () pour contrôler le contenu de sortie

Parfois, nous devons capturer un certain contenu de sortie, le traiter (comme le remplacement régulier, la journalisation, etc.), puis le sortir. Pour le moment, nous pouvons utiliser ob_start () et ob_get_clean () pour y parvenir.

Exemple 2: Filtrez le nom de domaine d'adresse d'image dans la sortie HTML

 <?php
ob_start();

// Supposons que ce soit la sortie d&#39;une partie de votre page
?>
<div>
    <img src="https://example.com/uploads/pic1.jpg" />
    <img src="https://example.com/uploads/pic2.jpg" />
</div>
<?php

$content = ob_get_clean();

// Le nom de domaine qui remplace l&#39;adresse d&#39;image est gitbox.net
$filtered = str_replace('https://example.com', 'https://gitbox.net', $content);

echo $filtered;
?>

Sortir:

 <div>
    <img src="https://gitbox.net/uploads/pic1.jpg" />
    <img src="https://gitbox.net/uploads/pic2.jpg" />
</div>

Cette méthode convient particulièrement lorsque vous souhaitez traiter uniformément la sortie (comme l'ajout de scripts statistiques, la compression de HTML, la modification des liens). En utilisant ob_list_handlers () , vous pouvez également vous assurer qu'il n'y a pas d'interférence de gestionnaire inutile avec la logique de sortie pendant le développement.