2010-08-09 8 views
4

Nous exécutons de grands répertoires où les utilisateurs copient/collent souvent le contenu des documents Word etc dans notre éditeur html TinyMCE.javascript html éditeur copier/coller problème

Le problème est souvent le texte suivant par exemple qui est caché là-bas qui apparaît sur nos pages Web:

<!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; mso-layout-grid-align:none; punctuation-wrap:simple; text-autospace:none; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} p {mso-margin-top-alt:auto; margin-right:0in; mso-margin-bottom-alt:auto; margin-left:0in; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} --> 

Yat-il un plugin TinyMCE ou un autre éditeur html croix navigateur bande automatiquement cela?

Ou une autre solution serait une commande php regex ou quelque chose qui pourrait supprimer ces déclarations de commentaires.

+0

Bonne chance avec celui-ci. J'ai regardé et regardé et ai regardé et n'ai rien trouvé, mais je regarde ce poste comme un faucon, en espérant que quelqu'un a une meilleure solution qu'en utilisant manuellement Dreamweaver pour nettoyer le désordre de Word. – Brad

+0

Essayez ckeditor à http://ckeditor.com/ –

+0

duplication possible de [tinymce et importation/copier coller de Microsoft Word] (http://stackoverflow.com/questions/1255738/tinymce-and-importing-copy-paste- from-microsoft-word) –

Répondre

3

J'ai essayé d'optimiser sur celui-ci pendant des années.

Ma meilleure solution pour va bien comme ceci:

  • ne pas utiliser un bloc racine, la mise en page mettra en œuvre la mise en page de racine
  • ne vous attendez pas à l'utilisateur de comprendre la différence entre <p> et <br /> et à cet effet traiter tout comme une simple pause car il est moins confus et plus ms-mot comme
  • permettent que des éléments attendus

Cette woul d être le code d'initialisation .

remove_linebreaks : false, 
force_br_newlines : true, <?php /* maybe we can behave more like gmail */ ?> 
force_p_newlines : false, <?php /* and preserve all message line breaks */ ?> 
convert_newlines_to_brs : false, <?php /* even so i would not count with it */ ?> 
forced_root_block : false 

<?php /* explicitly define what will be allowed */ ?> 
valid_elements: "h1,h2,h3,br,b,a,i,u,strong/b,em/i,u/span,strike/span,span,span[style],"+ 
       "sub,sup,a[href|name|anchor|target|title],ul,ol,li,p,object[classid|width|height|codebase|*],"+ 
       "param[name|value|_value],embed[type|width|height|src|*],"+ 
       "img[style|longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align]", 

Et puis j'ai la fonction post-processus suivant pour supprimer tous <p> et convertir tous </p>-<br /><br /> ce qui a été le plus stable solution copier-coller, je suis en mesure de dev.

C'est la fonction post-traitement:

setup : function(ed) { 
    ed.onPostProcess.add(function(ed, o) { 
     // Remove all paragraphs and replace with BR 
     o.content = o.content.replace(/<p [^>]+>|<p>/g, ''); 
     o.content = o.content.replace(/<\/p>/g, '<br />'); 
    }); 
}, 

remarquez que tout cela est juste filtrage Javascript et l'utilisateur sera en mesure de transmettre tout ce que le code non désiré au serveur en un clin d'oeil . Même si cette configuration est probablement destinée aux configurations d'administration finale, utilisez également strip_tags côté serveur car quelqu'un quelque part sera probablement en mesure de le contourner.

J'espère que ça aide!

+0

bingo! Merci beaucoup pour cela! – Joe

1

La commande PHP regex est ce que j'utiliserais personnellement.

$str = preg_replace('/<!--.*?--\>/','',$str); 
+0

parfait, donnera un coup de feu – Joe