2010-06-23 104 views
2

这是我疯狂伪装的伪代码。任何人都知道如何使这个真实?从MS-Word中清理粘贴的文本

背景:

此动态内容来自ckeditor。许多人将Microsoft Word内容粘贴在其中。不用担心,如果我只是调用属性不变,它会加载漂亮。但问题在于,我希望它仅缩写为125个字符。当我将截断添加到它时,所有的Microsoft Word脚本开始弹出。然后,我添加了simple_format,并进行了清理,截断,甚至让我的控制器开始发现MS会制作的具体变量,并将它们排除在外。但是它们太多了,而且这似乎是一个非常混乱的方式来完成这一点。因此!意识到它本身就是干净的。我想,为什么不把它切片。但是,微软的单词文本变为空白,但仍然保留其在字符串中的编号位置。所以我想出了这个(可能很糟糕)的解决方案。

分三步走。

  1. 当文本解析时,它不显示任何MSWord垃圾。但是该文本仍然在切片声明中占有一席之地。所以我想用正则表达式来找到第一个实际的字符。
  2. 取出该字符并找出它在总字符串中的编号位置。
  3. 使用切片语句将其从中删除。

    def about_us_truncated 
        x = self.about_us.find.first(regExp representing first actual character) 
        x.charCount = y 
        self.about_us[y..125] 
    end 
    

的唯一其他的想法我有,是一个正则表达式语句,它允许它明确地仅切实际的字符,像这样:

about_us([a-zA-Z][0..125]),但是这是肯定它是不是怎么写的。

这是微软Word垃圾的一些示例文本:

≪! [If Gte Mso 9]>≪Xml>≪Br /> ≪O:Office Document Settings>≪Br /> ≪O:Allow Png/>≪Br /> ≪/O:Off... 
+0

嗯...... MSWord垃圾? – 2010-06-23 19:03:33

+0

你能提供一些关于你在这里做什么的背景吗? – 2010-06-23 19:04:07

+0

加入背景上下文 – Trip 2010-06-23 19:12:40

回答

1

这在技术上不是直接的答案,但它看起来像你能找到的最好的一个。

为了防止MS Word,你应该使用CK Editor的内置MS字消毒器。这是因为为它编写正则表达式可能非常复杂,你可以很容易地将标签分解成一半,并用它来摧毁你的网站。

我作为一个解决方法做了什么,我做了一个强制粘贴为CK编辑器中的纯文本。

+0

你如何使用这种消毒剂? – cmrichards 2015-05-01 11:43:14

1

您没有提供太多的信息走下车的,但不要太持怀疑态度的尝试之前建立你自己的这个表达式你寻求帮助...

把你的示例文本,并将其粘贴在Rubular在测试字符串区域,并开始建立你的正则表达式。它在底部有一个很好的快速参考。

1

过这个

http://gist.github.com/139987

迷迷糊糊的,它看起来像它需要sanitize宝石。

+0

真棒找!我会让你知道它是怎么回事。我不能相信我昨天没有找到这个。 – Trip 2010-06-24 15:26:40

+0

嗯..这不起作用。主要是因为他们希望你手动输入元素,MSWord有一百万个元素。 – Trip 2010-06-24 16:58:09