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 :
Erreur généré :
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; }
- 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
Partager