Position actuelle: Accueil> Derniers articles> Comment utiliser ob_get_contents () pour capturer la sortie en php

Comment utiliser ob_get_contents () pour capturer la sortie en php

gitbox 2025-05-31

Qu'est-ce que la tampon de sortie?

Par défaut, Echo ou d'autres commandes de sortie enverront directement le contenu au client (navigateur). Cependant, après avoir activé la mise en mémoire tampon de sortie, la sortie ne sera pas envoyée immédiatement, mais sera d'abord enregistrée dans le tampon et ne sera pas sortie tant que le tampon sera effacé ou que le script soit terminé. De cette façon, nous pouvons capturer, modifier et même rediriger le contenu de sortie pendant l'exécution du script.


Le rôle d' OB_GET_CONTENTS ()

ob_get_contents () est utilisé pour obtenir le contenu dans le tampon de sortie actuel et renvoyer la chaîne. Si la mise en mémoire tampon de sortie n'est pas activée, l'appel de la fonction renvoie false .


Exemple d'utilisation correcte

 <?php
// Allumez la tampon de sortie
ob_start();

// Contenu de sortie analogique
echo "C&#39;est ce qui est dans le tampon。";

// Obtenez le contenu tampon
$content = ob_get_contents();

// Traiter le contenu,Par exemple, remplacer la chaîne
$processedContent = str_replace("Tampon", "Zone de cache", $content);

// 清空并关闭Tampon(Facultatif,Peut également être utilisé ob_end_flush() Sortie directe)
ob_end_clean();

// Sortir manuellement le contenu traité
echo $processedContent;
?>

Dans l'exemple ci-dessus:

  1. Utilisez ob_start () pour activer la mise en mémoire tampon de sortie.

  2. La sortie du contenu à l'aide d'écho est stockée dans le tampon.

  3. Lisez le contenu tampon sur le contenu de la variable $ via ob_get_contents () .

  4. Remplacez le contenu par une chaîne pour obtenir $ procedContent .

  5. Utilisez ob_end_clean () pour effacer et fermer le tampon pour éviter la sortie répétée du contenu.

  6. Enfin, publiez manuellement le contenu traité.


Scénarios d'application pratiques

1. Résultats de rendu de modèle de capture

Si vous utilisez un rendu de modèle PHP simple et que vous souhaitez capturer la sortie du modèle, puis le mettre en cache ou le modifier, la mise en mémoire tampon de sortie est très utile.

 <?php
ob_start();
include 'template.php';  // Sortie de fichier de modèle HTML
$html = ob_get_contents();
ob_end_clean();

// droite $html Cache、Compression ou autre traitement
file_put_contents('cache/page.html', $html);

// Enfin, émettez la page traitée
echo $html;
?>

2. Traitez la sortie de la bibliothèque tierce

Certaines bibliothèques tierces publieront directement du contenu, mais vous souhaitez intercepter ces sorties, le format uniforme ou le traitement d'emballage.

 <?php
ob_start();
third_party_function();  // Sortie directe内容的函数
$output = ob_get_contents();
ob_end_clean();

// Par exemple, l&#39;emballage est JSON Retour au format
echo json_encode(['data' => $output]);
?>

Choses à noter

  • Avant d'utiliser ob_get_contents () , vous devez vous assurer que le tampon est activé ( ob_start () est appelé), sinon faux sera renvoyé.

  • L'appel OB_END_CLEAN () peut fermer et effacer le tampon sans sortir de contenu. L'appel ob_end_flush () fermera le tampon et sortira le contenu.

  • Le tampon de sortie peut être imbriqué, et ob_get_contents () n'obtient que le contenu du tampon actuellement actif.


Conclusion

ob_get_contents () est un outil puissant pour contrôler le processus de sortie PHP. En combinaison avec le mécanisme de mémoire tampon de sortie, il peut réaliser diverses fonctions avancées telles que la capture du modèle, le cache de sortie et le remplacement du contenu dynamique. La maîtrise des principes et des méthodes d'utilisation de la mise en mémoire tampon de sortie améliorera considérablement votre contrôle sur la sortie PHP.