WYSIWYG-BINW3CC: soit What You See Is What You Get But Is Not W3C Compliant

Si dans vos interfaces d’administration (backoffice) vous installez des textarea WYSIWYG type Tinymce, Htmlarea, FCEditor vous avez déjà sans doute remarqué qu’il n’était pas toujours facile de garder des pages W3C compliants.
Allez expliquer à vos clients que la propriété ALT est obligatoire dans les balises IMG…

Voici donc une méthode automatisée, bien sympa, certe peu délicate mais tellement efficace : le module php-tidy (php5-tidy).
Attention ce module ne permet pas de réparer les pages qui contiennent des centaines d’erreurs, le code se doit d’être propre au minimum.

Voici un exemple simple:

<?php ob_start() ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
                       <!-- manque le head -->
<body>
<img src="toto.gif "/> <!-- manque le alt -->
<body>                 <!--erreur-->
</html>


<?php
$html = ob_get_clean();
$cfg = array(
'indent' => true,
'output-xhtml' => true,
'wrap' => 80,
'doctype' => 'strict',
'hide-comments' => true,
'accessibility-check' => 3,
'alt-text' => 'no desc for this image'
);
$tidy = new tidy;
$tidy->parseString($html, $cfg, 'utf8');
$tidy->cleanRepair();
?>

<?=$tidy?>

Et voici le resultat de la page :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
    <title></title>
  </head>
  <body>
    <img src="toto.gif" alt="no desc for this image" />
  </body>
</html>

Ce traitement est bien entendu gourmand et est à utiliser avant la mise en page de page/template/partial.