2010-08-09 5 views
4

Мы запускаем несколько больших каталогов, в которых пользователи часто копируют/вставляют содержимое из текстовых документов и т. Д. В наш редактор TinyMCE html.javascript html editor copy/paste problem

Проблема с этим часто следующий текст, например, получает спрятан там, который появляется на наших веб-страницах:

<!-- /* 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;} --> 

Есть ли TinyMCE плагин или какой-либо другой кросс-браузер HTML редактор, который автоматически раздеть это?

Или другим решением будет некоторая команда php regex или что-то, что может лишить эти объявления комментариев.

+0

Удачи вам в этом. Я посмотрел и посмотрел, посмотрел и ничего не нашел, но я смотрю этот пост, как ястреб, надеясь, что у кого-то есть лучшее решение, чем с помощью Dreamweaver, чтобы очистить беспорядок Word. – Brad

+0

Попробуйте ckeditor по адресу http://ckeditor.com/ –

+0

Возможный дубликат [tinymce и импортировать/скопировать пасту из слова microsoft] (http://stackoverflow.com/questions/1255738/tinymce-and-importing-copy-paste- from-microsoft-word) –

ответ

3

Я пытался оптимизировать этот процесс в течение многих лет.

Мой лучшее решение до сих пор выглядит следующим образом:

  • не использовать корневой блок, схема будет реализовывать корневой макет
  • не ожидал пользователь, чтобы понять разницу между <p> и <br /> и для этого относиться ко всему, как простой перерыв, как это менее запутанное и более мс слово, как
  • только позволяют ожидаемых элементов

Это woul d код инициации.

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]", 

А потом у меня есть следующие функции после процесса, чтобы удалить все <p> и конвертировать все </p> в <br /><br /> это был наиболее стабильным копипаст решение я смог Dev.

Это функция постобработки:

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 />'); 
    }); 
}, 

ли заметить, что все это только Javascript фильтрации и пользователь сможет передать все, что не-нужный код сервера в оснастке , Несмотря на то, что эта настройка, вероятно, предназначена для настроек администратора, также использует strip_tags на стороне сервера, так как кто-то где-то, вероятно, сможет обходить ее.

Надеюсь, это поможет!

+0

бинго! Большое спасибо за это! – Joe

1

Команда PHP regex - это то, что я использую лично.

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

отлично, даст этот шанс – Joe