2009-12-01 17 views
1

Je HTML à partir d'un aller chercher Smarty et la nécessité de le nettoyer (veulent tout simplement supprimer des espaces supplémentaires, et le format/indent le HTML bien), j'utilise bien rangé faire quelque chose comme:Utilisation de Tidy pour nettoyer HTML, le contenu HTML est en cours de modification, problème d'encodage?

 

$html = $smarty->fetch('foo.tmpl'); 

$tidy = new tidy; 
$tidy->parseString($html, array(
    'hide-comments' => TRUE, 
    'output-xhtml' => TRUE, 
    'indent' => TRUE, 
    'wrap' => 0 
)); 
$tidy->cleanRepair(); 
return $tidy; 
 

Bien que Cela fonctionne bien pour l'anglais, le support multilingue semble casser cela. Par exemple, j'ai des caractères arabes ok en $ html, mais après avoir rangé un mauvais encodage:

& Ugrave; & Dagger; & Ugrave; „ et Oslash; £ & Ugrave; & poignard; & Oslash; ª & Ugrave; & hellip; & Oslash; ª & Oslash; £ & Ugrave; ƒ et Oslash; ¯ et Oslash; £ & Ugrave; & poignard; & Ugrave; ƒ et Oslash; ª & Oslash; & plusmn; & Ugrave; & Scaron; & Oslash; ¯

Y a-t-il un paramètre dans tidy qui formatera le HTML, mais laissera le HTML lui-même? J'ai regardé ce poste: PHP "pretty print" HTML (not Tidy) mais il semble que cela ne fonctionnera pas puisque je saisis mon code HTML de smarty.

Toute suggestion appréciée.

Répondre

0
$html = $smarty->fetch('foo.tmpl'); 

$tidy = new tidy; 
$tidy->parseString($html, array(
    'hide-comments' => TRUE, 
    'output-xhtml' => TRUE, 
    'indent' => TRUE, 
    'wrap' => 0 
      ), 
'raw'); 
$tidy->cleanRepair(); 
return $tidy; 

utilisation brut en tant que paramètre de codage
Pour premières valeurs de sortie de la volonté soignées ci-dessus 127 sans les traduire en entités et tous les caractères arabes sont au-dessus de 127