ruby – Sanitize gem(和Loofah)在标记内部冒号之前删除文本
当我注意到“下午6点30分”等时间变成“晚上30点”时,尝试清理一些html碎片时,与Loofah和Sanitize一起出现了一些奇怪的行为.
做了一些调查,发现了以下内容: Loofah.scrub_fragment("<span>asdfasdf 6:30 pm</span>",:strip).to_html #=> "<span>asdfasdf 30 pm</span>" Loofah.scrub_fragment("6:30 pm",:strip).to_html #=> "6:30 pm" Loofah.scrub_fragment("<foo>asdfasdf 6:30 pm</foo>",:strip).to_html #=> "asdfasdf 6:30 pm" Loofah.scrub_fragment("bar:30 pm",:strip).to_html #=> "bar:30 pm" Loofah.scrub_fragment("<span>bar:30 pm</span>",:strip).to_html #=> "<span>30 pm</span>" Loofah.scrub_fragment("<span>bar: asdfasdfadsf pm</span>",:strip).to_html #=> "<span>bar: asdfasdfadsf pm</span>" Loofah(:prune等)和Sanitize的所有变体就是这种情况,所以我假设它们都是两个共同的代码问题.在消毒之前,我需要做些什么来逃避代码中的冒号? 编辑1 编辑2 Jruby 1.7.0:出乎意料的结果 doc = Nokogiri::HTML.fragment("<span>3:30pm</span>") => #(DocumentFragment:0x5fbc { name = "#document-fragment",children = [ #(Element:0x5fc0 { name = "span",children = [ #(Text "30pm")] })] }) Ruby 1.9.3:预期结果 doc = Nokogiri::HTML.fragment("<span>3:30pm</span>") => #(DocumentFragment:0x3fc4b102055c { name = "#document-fragment",children = [ #(Element:0x3fc4b101fff8 { name = "span",children = [ #(Text "3:30pm")] })] }) 将尝试继续挖掘,但欢迎任何建议. 解决方法
我相信这是Nokogiri的回归错误.我能够复制你的问题,并尝试了几个版本的Nokogiri.
它在1.5.0中正常工作: jruby-1.6.7.2 :002 > gem 'nokogiri','=1.5.0' => true jruby-1.6.7.2 :003 > require 'nokogiri' => true jruby-1.6.7.2 :004 > doc = Nokogiri::HTML.fragment("<span>3:30pm</span>") => #<Nokogiri::HTML::DocumentFragment:0x7d4 name="#document-fragment" children=[#<Nokogiri::XML::Element:0x7d2 name="span" children=[#<Nokogiri::XML::Text:0x7d0 "3:30pm">]>]> 它在1.5.1中失败: jruby-1.6.7.2 :002 > gem 'nokogiri','=1.5.1' => true jruby-1.6.7.2 :003 > require 'nokogiri' => true jruby-1.6.7.2 :004 > doc = Nokogiri::HTML.fragment("<span>3:30pm</span>") => #<Nokogiri::HTML::DocumentFragment:0x7d4 name="#document-fragment" children=[#<Nokogiri::XML::Element:0x7d2 name="span" children=[#<Nokogiri::XML::Text:0x7d0 "30pm">]>]> 编辑: 我继续向Nokogiri提交了bug report. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |