Articles Comments

Blog de Keran » Développement Web, Featured » Version améliorée de print_r: affichage et valeur retournée

Version améliorée de print_r: affichage et valeur retournée

Quel magnifique outil que ce print_r, function indispensable en PHP pour débuguer. Chaînes ou tableaux, la fonction se dépatouille pour sortir un contenu lisible. D’autant plus pratique avec des tableaux à plusieurs dimensions (2,3,4…) ou des tableaux associatifs peu piqués des hannetons.

Pratique mais quand même deux gros défauts:
- la fonction ne retourne rien: affichage direct
- l’affichage se fait en mode texte: pour débuguer une page HTML, une petit CTRL U sous firefox ou afficher la source sous ie.

Pour gagner du temps en production voici quelques astuces pour améliorer un poil le fameur print_r.

Affichage directement en HTML (évitant de passer par la source):

function    PrePrint_r($tab)
{
     print '<span style="white-space:pre;">';
     print_r($tab);
     print '</span>';
}

Avantage: pas besoin de passer par la source
Défaut : affichage direct sur le navigateur

Affichage directement en HTML avec gestion de sortie

function HTMLprint_r($val)
{
     ob_start();
     print_r($val);
     $str =    ob_get_contents();
     ob_end_clean();
     return str_replace(
         array(" ","\n","\r"),
         array("&nbsp;","<br />","<br />"),$str);
}

Nota: il s’agit bien sûr de &nbsp; et non &amp;nbsp;.

Pas besoin de faire une function récursive; il suffit de gérer le tampon de sortie. On stocke la valeur renvoyée, on la maltraite au plaisir et bravement la fonction renvoie une chaîne.

Elle peut être appelée directement echo HTMLprint_r($monTableau) ou être stockée $maChaineDeDebug = HTMLprint_r($monTableau)

Bon après c’est ouvert, la fonction peut être configurée dans un fichier global et s’appeler seulement p() pour facilier le temps de debug.

Written by Keran

Filed under: Développement Web, Featured · Tags: , , , ,

Leave a Reply