Bonjour,

Je pense que beaucoup de personne on eu ce probleme, j'ai une
admin et les redacteurs mettre du code HTML de word (2003) ce qui fait
que l'affichage est long, moche et inutilement chargé de balise
exotique made in MS.

J'ai testé de nombreux soft gratuit et non gratuit, et la quasi
totalité nettoye tres mal le code. J'ai testé aussi divers outils en
ligne, dont un particulierement performant basé surement sur des
expressions reguliere (textism).

Et j'ai trouvé une fonction en C# que j'ai voulu adapté pour php
mais mes lacunes en expression reguliere font que j'ai un probleme
de code.

Code sources C# :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
private string CleanHtml(string html)
{ 
    // start by completely removing all unwanted tags 
    html = Regex.Replace(html, @"<[/]?(font|span|xml|del|ins|[ovwxp]:\w+)[^>]*?>", "", RegexOptions.IgnoreCase); 
    // then run another pass over the html (twice), removing unwanted attributes 
    html = Regex.Replace(html, @"<([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w+)=(?:'[^']*'|""[^""]*""|[^>]+)([^>]*)>","<$1$2>", RegexOptions.IgnoreCase); 
    html = Regex.Replace(html, @"<([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w+)=(?:'[^']*'|""[^""]*""|[^>]+)([^>]*)>","<$1$2>", RegexOptions.IgnoreCase); 
    return html;
}

Code sources PHP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
function CleanHtml($html)
{ 
   $html = preg_replace("<[/]?(font|span|xml|del|ins|[ovwxp]:\w+)[^>]\*?>", "", $html);  
   $html = preg_replace("<([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w+)=(?:'[^']*'|""[^""]*""|[^>]+)([^>]*)>", "<$1$2>", $html); 
   $html = preg_replace("<([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w+)=(?:'[^']*'|""[^""]*""|[^>]+)([^>]*)>", "<$1$2>", $html); 
    return $html;
}
Erreur généré :
- T_CONSTANT_ENCAPSED_STRING (sur la 2eme ligne).

References :
- http://tim.mackey.ie/CleanWordHTMLUs...pressions.aspx
- http://www.lifehacker.com/software/w...nts-133360.php
- http://textism.com/wordcleaner/


Si vous avez une idées pour ce code, je vous remerci, ou tout autre
proposition performante alternative :)

Merci beaucoup,
AuReL