|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() |
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 :
Code sources PHP : Code :
- 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 |
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 421 ![]() |
Essaie de remplacer cette deuxieme ligne :
Code :
$html = preg_replace("<([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w+)=(?:'[^']*'|""[^""]*""|[^>]+)([^>]*)>", "<$1$2>", $html); Code :
$html = preg_replace("<([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w+)=(?:'[^']*'|\"[^\"]*\"|[^>]+)([^>]*)>", "<$1$2>", $html); |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() |
Oui j'ai integre un editeur wysiwyg a la mode (genre fckEditor), mais
les redacteurs ne veulent pas bossé sur le "web" directement. Enfin apres moult debat, j'ai dit que j'essairais de trouvé une solution alternative a ca. Je vais essayer, en tout cas, merci :) Resultat de la modification : Warning: preg_replace(): Unknown modifier ']' |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 421 ![]() |
Mais quand il font un copié-coller de leur page sur fckeditor, ce dernier nettoie le code ?
Sinon pour ta ligne : Code :
$html = preg_replace("`([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w+)=(?:'[^']*'|\"[^\"]*\"|[^>]+)([^>]*)`", "<$1$2>", $html); |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() |
Ca marche pas super le copier coller depuis word en faite, vue que j'voudrais gardé ma validation XHTML 1.1...
Resultat : Ca marche, mais ca clean vraiment tout ! lol Il reste juste encore des "<" et des ">" un peu partout. En tout cas merci, si jamais ta une idée pour le nettoyage. Microsoftien je suis aussi preneur. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() |
Balise restante du fckEditor :
<!--[endif]--> <!--[if !supportLists]--> + les balise de styles qui sont non valide XHTML 1.1 (ouais bon d'accord je fais le difficile lol). Remarque, j'pense qu'on peut virée d'une seule traite tout les commentaires HTML ? |
|
|
00
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 421 ![]() |
Tu as pensé à Tidy ?
http://php.net/tidy |
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() |
Non je n'avais pas regardé, ca me semble tres interessant.
Pour fckEditor et pour ce que ca interesse, voila la fonction du cleanWord Code source javascripts : Code :
je pense que la conversion pourra etre performante... Je verrais plus tard pour ca conformité XHTML 1.1. lol |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com