2012-07-13 60 views
0

我们使用的消毒宝石和ヶ辆组合做一些清理用户输入HTML的宽松HTML字符。净化宝石使用Hpricot,但现在使用Nokogiri。我需要将Hpricot从应用程序中取出。清洁/消毒HTML,但保持与的Ruby/Rails +引入nokogiri +消毒(?)

这里有两个测试串,每个其次是输出我期待:

测试串1:

"SOME TEXT < '<span style='background-image: url(\"http://evil.ru/webbug.png\")'>MORE' & TEXT!!!</span>" 

expected_text = "SOME TEXT < 'MORE' & TEXT!!!" 

第二测试字符串(稍有不同的路径):

'Support <i>odd</i> chars like " < \' ‽' 

expected_text = 'Support <i>odd</i> chars like &quot; &lt; &#39; ‽' 

这是你已经解决的问题吗?你用什么工具?

+0

对不起,我不明白你的问题。你说你的测试失败了。你得到的结果是什么,而不是预期的结果。你想要一些标签被消毒,一些留下来,并且特殊的字符被转移到HTML实体上吗? – Macario 2012-07-13 15:35:46

+0

为了清晰起见,我编辑了这个问题。但是,是的,对于第一个字符串,我希望html标签被剥离,但松散的“<”保留。 – whatbird 2012-07-13 16:35:11

回答

2

您可能希望尝试丝瓜宝石:

Loofah.document("SOME TEXT < '<span style='background-image: url(\"http://evil.ru/webbug.png\")'>MORE' & TEXT!!!</span>").to_html 
=> "SOME TEXT MORE' &amp; TEXT!!!" 

丝瓜不处理在某些原因,第二个例子中的Unicode字符,但我很乐意寻找到它,如果你提交关于丝瓜​​络的Github问题(完全披露:我是丝瓜络的作者和Nokogiri的共同作者)。

一些更多的链接: