我试图解码一些HTML实体,如'&lt;'成为'<'.
我有一个旧的宝石(html_helpers),但似乎已经放弃了两次.
有什么建议?我需要在模型中使用它.
Dam*_*IEU 285
要对字符进行编码,您可以使用CGI.escapeHTML:
string = CGI.escapeHTML('test "escaping" <characters>')
Run Code Online (Sandbox Code Playgroud)
要解码它们,有CGI.unescapeHTML:
CGI.unescapeHTML("test "unescaping" <characters>")
Run Code Online (Sandbox Code Playgroud)
当然,在此之前你需要包含CGI库:
require 'cgi'
Run Code Online (Sandbox Code Playgroud)
如果你在Rails中,则不需要使用CGI来编码字符串.有h方法.
<%= h 'escaping <html>' %>
Run Code Online (Sandbox Code Playgroud)
Iva*_*rov 149
HTMLEntities可以做到:
: jmglov@laurana; sudo gem install htmlentities
Successfully installed htmlentities-4.2.4
: jmglov@laurana; irb
irb(main):001:0> require 'htmlentities'
=> []
irb(main):002:0> HTMLEntities.new.decode "¡I'm highly annoyed with character references!"
=> "¡I'm highly annoyed with character references!"
Run Code Online (Sandbox Code Playgroud)
Hoa*_* Le 41
我认为Nokogiri宝石也是不错的选择.它非常稳定,拥有庞大的贡献社区.
样品:
a = Nokogiri::HTML.parse "foo bär"
a.text
=> "foo bär"
Run Code Online (Sandbox Code Playgroud)
要么
a = Nokogiri::HTML.parse "¡I'm highly annoyed with character references!"
a.text
=> "¡I'm highly annoyed with character references!"
Run Code Online (Sandbox Code Playgroud)
小智 35
要在Rails中解码字符,请使用:
<%= raw '<html>' %>
Run Code Online (Sandbox Code Playgroud)
所以,
<%= raw '<br>' %>
Run Code Online (Sandbox Code Playgroud)
会输出
<br>
Run Code Online (Sandbox Code Playgroud)
如果你不想添加一个新的依赖项只是为了这样做(比如HTMLEntities)并且你已经在使用Hpricot它,那么它既可以逃脱也可以为你进行转换.它处理的不仅仅是CGI:
Hpricot.uxs "foo bär"
=> "foo bär"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
137075 次 |
| 最近记录: |