Nokogiri阻止转换实体

时间:2011-06-14 11:09:52

标签: html ruby nokogiri

def wrap(content)
  require "Nokogiri"
  doc = Nokogiri::HTML.fragment("<div>"+content+"</div>")
  chunks = doc.at("div").traverse do |p|
    if p.is_a?(Nokogiri::XML::Text)
      input = p.content
      p.content = input.scan(/.{1,5}/).join("&shy;")
    end
  end
  doc.at("div").inner_html
end

wrap("aaaaaaaaaa")

给了我

"aaaaa&amp;shy;aaaaa"

而不是

"aaaaa&shy;aaaaa"

如何得到第二个结果?

1 个答案:

答案 0 :(得分:0)

返回

doc.at("div").text

而不是

doc.at("div").inner_html

然而,这会从结果中删除所有HTML。如果你需要保留其他标记,你可以放弃使用CGI.unescapeHTML:

CGI.unescapeHTML(doc.at("div").inner_html)