Je vois deux intérêts pour recourir à la librairie Tidy. Cette librairie permet de traiter les pages HTML envoyées au navigateurs. Mais on pourrait supposer que le code HTML est convenablement écrit dès le début. L'intérêt est alors de préserver la qualité du code HTML en validant les entrées ajoutées dynamiquement : billets, commentaires...

Est-ce pour autant que Tidy doit être considéré comme la solution miracle ? Même avec PHP5, Tidy n'est toujours pas une panacée. Cet outil ne corrige pas toutes les erreurs. Associer Tidy et PHP5 peut continuer à réserver des surprises.

Voici par exemple un code HTML invalide qu'il faudrait corriger : source.html. Faisons confiance à la solution présentée par ScriptsPHP :

fichier tidy.php
 <?php  
$Tidy = new tidy();  
// Dénition des options  
$Options = array (  
        'output-xhtml' => true,  
        'clean' => true,  
        'indent' => true,  
        'indent-space' => 4,  
        'alt-text' => 'Mon image',  
        'logical-emphasis' => true,  
        'accessibility-check' => 3,  
        'enclose-block-text' => true,  
        'hide-comments' => true,  
        'doctype' => 'strict',  
        'wrap' => 100  
);  
// Chargement du fichier de référence avec les options  
$Tidy ->parseFile( './source.html', $Options, 'UTF8');  
// Nettoyage et réparation  
$Tidy -> cleanRepair();  
// Affichage du résltat  
echo $Tidy;  
?> 

Il ne reste plus qu'à vérifier sur le résultat obtenu que le miracle n'a pas eu lieu.

Pour parvenir à produire un code HTML correct, il faut encore nettoyer le code aux moyen d'expressions régulières.

 <?php 
... 
// Nettoyage et réparation  
$Tidy -> cleanRepair();  
$Tidy = (string) $Tidy;  
if ( preg_match_all('#<form(.*?)>#s', $Tidy, $match) )  
  foreach($match[1] as $temp)  
    if (preg_match('#name\s*=\s*"(.*?)"#s', $temp, $match2) )  
      $Tidy = str_replace($match2[0], '', $Tidy);</span> 
// Affichage du résltat  
echo $Tidy;  
?> 

Comme indiqué précédemment dans le billet PHP4, Tidy et XHTML 1.0 Strict, la librairie Tidy n'aime pas l'XHTML 1.0 Strict. Au point d'être capable de détériorer un code XHTML tout à fait correct en y ajoutant des erreurs. Il faut bien garder cela à l'esprit en attendant une évolution de la librairie Tidy...