2010-10-31 12 views
4

Suis-je autorisé à avoir deux ou plusieurs ob_start(); dans mes fichiers php si oui, quelle est la bonne façon de terminer un ob_start(); et commencer un autre?PHP ob_start() question

Répondre

6

A partir du manuel:

tampons de sortie sont empilables, c'est vous pouvez appeler ob_start(), tandis qu'un autre ob_start() est actif. Assurez-vous simplement que vous appelez ob_end_flush() le approprié nombre de fois. Si plusieurs fonctions de rappel en sortie sont actives, la sortie est filtrée séquentiellement à travers chacune d'elles dans l'ordre d'imbrication .

En plus de l'empilage (imbrication), vous pouvez avoir des blocs séparés en séquence.

<? 
ob_start(); 
echo "Foo"; 
ob_end_flush(); // outputs buffer contents and turns off output buffering 

ob_start(); 
echo "Bar"; 
ob_end_flush(); 
?> 
0

Vous pouvez faire plus d'un ob_start() sur une page. Vous terminez ob_start() avec ob_end_clean().

ob_start(); 
$postOutput = preg_replace('/<img[^>]+./','', ob_get_contents()); 
ob_end_clean(); 
echo $postOutput; 
+1

Si vous ne faites aucun traitement supplémentaire de '' postOutput' $, alors ob_end_clean() 'fait juste du travail supplémentaire par rapport à' ob_end_flush() ' –

+0

droit, étant donné que ob_end_clean va effacer le tampon dessus. – matthewpavkov