gpt4 book ai didi

php - javascript html编辑器复制/粘贴问题

转载 作者:可可西里 更新时间:2023-10-31 23:11:43 25 4
gpt4 key购买 nike

我们运行一些大型目录,用户经常在这些目录中将 word 文档等内容复制/粘贴到我们的 TinyMCE html 编辑器中。

这个问题通常是以下文本例如隐藏在那里显示在我们的网页上:

<!-- /* 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 正则表达式命令或可以删除​​这些注释声明的东西。

最佳答案

多年来我一直在努力优化那个。

到目前为止我最好的解决方案是这样的:

  • 不要使用根 block ,布局将实现根布局
  • 不要指望用户理解 <p> 之间的区别和 <br />因此,将所有事情都视为一个简单的休息,因为它不那么令人困惑,而且更像 ms-word
  • 只允许预期的元素

这将是初始化代码

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 />这是我能够开发的最稳定复制粘贴解决方案。

这是后处理函数:

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在服务器端,因为某个地方的某个人可能能够绕过它。

希望对您有所帮助!

关于php - javascript html编辑器复制/粘贴问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3441940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com