Pour qu'ob_get_contents() te retourne quelque-chose, il faut que ce que génère ton script PHP ne soir PAS envoyé au client.
Pour çà, au début de ton script, tu utilise ob_start() qui inque à PHP d'"Enclencher la bufferisation de sortie".
Ensuite, rien de ce que ton script produit ne sera envoyé au client jusqu'à l'appel de ob_flush() ou ob_end_flush(), qui vide le buffer.
Mais avant de vider le buffer, tu peux récupérer son contenu avec ob_get_contents() !
Exemple :
<?php
ob_start();
echo( "<HTML>\n" );
echo( "<BODY>\n" );
echo( "<H1>BONJOUR TOTO21 !</H1>\n" );
echo( "</BODY>\n" );
echo( "</HTML>\n" );
$str = ob_get_contents();
ob_end_flush();
?>
Et comme par magie, $str contient :
<HTML>
<BODY>
<H1>BONJOUR TOTO21 !</H1>
</BODY>
</HTML>
---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.