如何将html十进制特殊字符恢复正常?

时间:2011-11-29 00:37:23

标签: ruby-on-rails ruby-on-rails-3

具体来说,假设我以字符串

开头
  string ="hello \'i am \' me"

然后我将字符串textilize以获得输出:

  textilize(string) => "<p>hello &#8217;i am &#8217; me</p>"

然后,因为我想得到一个人可见的字符数,我希望剥离html标签,并将特殊字符'反转为简单的撇号(即'或'')。 Strip_tags很容易:

 strip_tags(textilize(string)) => "hello &#8217;i am &#8217; me"

但我不知道如何扭转特殊字符。如果它有帮助,我知道方法html_escape会将尖括号等字符转换为十进制格式:

 html_escape(">") => "&gt;"

但我不知道有哪种方法可以解决这个问题。任何人都有关于自定义方法或rails方法的建议来完成这项任务吗?

2 个答案:

答案 0 :(得分:3)

我不确定Rails是否内置了这个内容,但是有library可以做到这一点。它甚至可能带有Rails,因为我有它但没有单独安装它:

require 'htmlentities'

HTMLEntities.new.decode("&gt;") # =>  ">"
HTMLEntities.new.encode(">") # => "&gt;"

答案 1 :(得分:2)

您可以使用CGI::unescapeHTML

> CGI::unescapeHTML("Usage: foo &quot;bar&quot; &lt;baz&gt;")
=> "Usage: foo \"bar\" <baz>"

*编辑:htmlentities的+1 @Beerlington。我总是忘记它存在。