9

我有一个网站,用户可以使用 TinyMCE 的自定义实现发布内容(如在论坛、评论等中)。他们中的很多人喜欢从 Word 中复制和粘贴,这意味着他们的输入通常带有大量相关的 MS 内联格式。

我不能只是摆脱<span whatever>TinyMCE 依赖 span 标签进行某些格式设置,而且我不能(也不想)强迫用户使用 TinyMCE 的“从 Word 粘贴”功能(这不无论如何,t似乎工作得很好)。

有人知道可以为我处理这个问题的库/类/函数吗?这一定是一个普遍的问题,虽然我找不到任何确定的东西。我最近一直在想,寻找 MS 特定模式的一系列蛮力正则表达式可能会起到作用,但我不想重写可能已经可用的东西,除非我必须这样做。

此外,修正弯引号、破折号等会很好。我现在有自己的东西要做,但我真的只想找到一个 MS 转换过滤器来统治它们。

4

4 回答 4

7

HTML Purifier将创建符合标准的标记并过滤掉许多可能的攻击(例如 XSS)。

对于不需要 XSS 过滤的更快清理,我使用 PECL 扩展Tidy,它是Tidy HTML实用程序的绑定。

如果这些对您没有帮助,我建议您切换到内置此功能的 FCKEditor 。

于 2008-12-18T21:39:26.990 回答
1

就我而言,这工作得很好:

$text = strip_tags($text, '<p><a><em><span>');

与其尝试提​​取您不想要的东西,例如嵌入的词 xml,不如指定您被允许的标签。

于 2017-07-05T19:51:13.740 回答
0

网站http://word2cleanhtml.com/在从 Word 转换方面做得很好。我通过报废在 PHP 中使用它来处理一些遗留的 HTML,直到现在它工作得很好(结果是非常干净的<p>, <b>代码)。当然,作为外部服务,像您的案例一样在在线处理中使用它并不好。

如果您尝试它并带来许多 400 错误,请先尝试使用Tidy过滤 HTML 。

于 2015-02-12T10:25:59.757 回答
0

就我而言,有一个模式。不需要的部分总是以

<!-- [if gte mso 9]>

并以

<![endif]-->

所以我的解决方案是在此块之前和之后删除所有内容:

$array = explode("<!-", $string, 2);
$begin = $array[0];
$end=substr(strrchr($string,'[endif]-->'),10);
echo $begin.$end;
于 2016-05-17T19:14:55.417 回答