我有一个网站,用户可以使用TinyMCE的自定义实现发布内容(如论坛,评论等)。很多人都喜欢复制和放弃从Word粘贴,这意味着他们的输入通常伴随着大量相关的MS内联格式。
我不能摆脱<span whatever>
,因为TinyMCE依赖于span标签的某些格式,我不能(也不想)强迫所述用户使用TinyMCE的“粘贴”从Word“功能(无论如何看起来效果不佳)。
任何人都知道一个库/类/功能会为我处理这个问题吗?它必定是一个常见的问题,尽管我找不到任何确定的东西。我最近一直在想,一系列寻找MS特定模式的暴力正则表达式可能会成功,但我不想重新编写可能已经可用的东西,除非我必须这样做。
此外,修复卷曲引号,em-dashes等也会很好。我现在有自己的东西,但我真的只想找到一个MS转换过滤器来统治它们。
答案 0 :(得分:7)
HTML Purifier将创建符合标准的标记并过滤掉许多可能的攻击(例如XSS)。
对于不需要XSS过滤的更快清理,我使用PECL扩展Tidy,它是Tidy HTML实用程序的绑定。
如果这些对您没有帮助,我建议您切换到具有此功能的built-in的FCKEditor。
答案 1 :(得分:0)
网站http://word2cleanhtml.com/在从Word转换方面做得很好。我通过报废在PHP中使用它来处理一些遗留的HTML,直到现在它工作得很好(结果是非常干净的<p>, <b>
代码)。当然,作为一种外部服务,在网上处理中使用它并不像你的情况那样好。
如果您尝试它并且会带来400多个错误,请尝试先使用Tidy过滤HTML。
答案 2 :(得分:0)
就我而言,有一种模式。不需要的部分始终以
开头<!-- [if gte mso 9]>
并以
结束<![endif]-->
所以我的解决方案是在这个块之前和之后删除所有内容:
$array = explode("<!-", $string, 2);
$begin = $array[0];
$end=substr(strrchr($string,'[endif]-->'),10);
echo $begin.$end;
答案 3 :(得分:0)
就我而言,这很好用:
$text = strip_tags($text, '<p><a><em><span>');
您可以只指定您允许的标记,而不是尝试提取您不想要的内容,例如嵌入式字词xml。