Salut à tous,

Sur un site en iso-8859-1, j'ai des soucis avec les caractères word et des petites erreurs de syntaxe qui sont dus au fait que le backoffice permet aux utilisateurs de faire des copier/coller de Word.

J'ai donc essayé de poser cette fonction (les * c'est pour le forum) :


//--------------------------------------------------------------- Tidy
// configuration
$config_tidy = array('indent'=> true,
                     'indent-spaces'=> 2,
                     'output-xhtml' => false,
                     'show-body-only' => false);

    foreach ($config_tidy as $key => $value) {
        tidy_setopt($key,$value);
    }

// nettoyage du code
function tidycleaner($html) {

   // probleme avec caractères word
   $conv = array(
    chr(129) => '',
    chr(130) => '&*#8218',
    chr(131) => '&*#402;',
    chr(132) => '&*#8222;',
    chr(133) => '&*#8230;',
    chr(134) => '&*#8224;',
    chr(135) => '&*#8225;',
    chr(136) => '&*#710;',
    chr(137) => '&*#8240;',
    chr(138) => '&*#352;',
    chr(139) => '&*#8249;',
    chr(140) => '&*#338;',
    chr(141) => '',
    chr(142) => '',
    chr(143) => '',
    chr(144) => '',
    chr(145) => '&*#8216;',
    chr(146) => '&*#8217;',
    chr(147) => '&*#8220;',
    chr(148) => '&*#8221;',
    chr(149) => '&*#8226;',
    //chr(150) => '–',
    chr(150) => '-',
    chr(151) => '&*#8212;',
    chr(152) => '&*#732;',
    chr(153) => '&*#8482;',
    chr(154) => '&*#353;',
    chr(155) => '&*#8250;',
    chr(156) => '&*#339;',
    chr(157) => '',
    chr(158) => '',
    chr(159) => '&*#376;'
    );

    // on remplace avant de parser
    $html = str_replace(array_keys($conv),array_values($conv),$html);

    tidy_parse_string($html);
    tidy_clean_repair();
    $html = tidy_get_output();

    // syntaxe xml a supprimer
    $html = ereg_replace ("\<\?xml([^\>]*)\>", "", $html);

    return $html;
}


Le truc bizarre c'est que tidy "ne comprends pas" les transcriptions en caractère numérique valide et je me retrouve avec les carrés de la mort Smiley cligne

Si je passe juste la fonction :

    $html = str_replace(array_keys($conv),array_values($conv),$html);


Les caractères sont bien convertit.

J'ai essayé avec l'option word-2000 de Tidy mais pas mieux Smiley decu

Je ne sais pas si c'est vraiment le forum pour exposer ce pb mais auriez vous une idée sur ce souci d'encodage et de transcription ?

@+
YvesTan
Modifié par YvesTan (28 May 2005 - 12:12)
Merci pour ta réponse. Mais j'utilise déjà une fonction similaire qui fonctionne Smiley cligne

Le pb c'est plus sur Tidy je pense ? Que les spécialistes de Tidy lèvent la main Smiley cligne

++
Désolé pour le délai mais le temps de faire quelques essais. Donc dans l'ordre inverse ca marche Smiley cligne

Solution simple merci !

à bientôt.