首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Ruby中编码/解码HTML实体?

如何在Ruby中编码/解码HTML实体?
EN

Stack Overflow用户
提问于 2009-10-21 20:36:33
回答 7查看 151.2K关注 0票数 216

我正在尝试解码一些超文本标记语言的实体,比如'&amp;lt;'变成了'<'

我有一个旧宝石(html_helpers),但它似乎已经被丢弃了两次。

有什么建议吗?我需要在模型中使用它。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-03-06 22:19:05

HTMLEntities可以做到:

代码语言:javascript
复制
: 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 "&iexcl;I&#39;m highly&nbsp;annoyed with character references!"
=> "¡I'm highly annoyed with character references!"
票数 163
EN

Stack Overflow用户

发布于 2009-10-21 20:46:51

要对字符进行编码,可以使用CGI.escapeHTML

代码语言:javascript
复制
string = CGI.escapeHTML('test "escaping" <characters>')

要解码它们,可以使用CGI.unescapeHTML

代码语言:javascript
复制
CGI.unescapeHTML("test &quot;unescaping&quot; &lt;characters&gt;")

当然,在此之前,您需要包含CGI库:

代码语言:javascript
复制
require 'cgi'

如果您在Rails中,则不需要使用CGI对字符串进行编码。这里有h方法。

代码语言:javascript
复制
<%= h 'escaping <html>' %>
票数 314
EN

Stack Overflow用户

发布于 2014-12-18 16:27:47

我认为Nokogiri gem也是一个很好的选择。它非常稳定,并且有一个巨大的贡献社区。

示例:

代码语言:javascript
复制
a = Nokogiri::HTML.parse "foo&nbsp;b&auml;r"    
a.text 
=> "foo bär"

代码语言:javascript
复制
a = Nokogiri::HTML.parse "&iexcl;I&#39;m highly&nbsp;annoyed with character references!"
a.text
=> "¡I'm highly annoyed with character references!"
票数 50
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1600526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档