kch*_*kch 93 html ruby encode escaping ruby-on-rails
我有一个不受信任的字符串,我想在HTML页面中显示为文本.我需要以HTML实体的形式逃避字符' <'和' &'.越少越好.
我正在使用UTF8,并且不需要其他实体用于重音字母.
Ruby或Rails中是否有内置函数,或者我应该自己编写?
小智 137
签出Ruby CGI类.有一些方法可以编码和解码HTML以及URL.
CGI::escapeHTML('Usage: foo "bar" <baz>')
# => "Usage: foo "bar" <baz>"
Run Code Online (Sandbox Code Playgroud)
Tre*_*ble 89
的hhelper方法:
<%=h "<p> will be preserved" %>
Run Code Online (Sandbox Code Playgroud)
RSK*_*RSK 77
在Ruby on Rails 3中,HTML默认会被转义.
对于非转义字符串,请使用:
<%= raw "<p>hello world!</p>" %>
Run Code Online (Sandbox Code Playgroud)
J-_*_*_-L 15
除了克里斯托弗·布拉德福德在任何地方使用HTML转义的答案之外,因为大多数人现在都不使用CGI,你也可以使用Rack:
require 'rack/utils'
Rack::Utils.escape_html('Usage: foo "bar" <baz>')
Run Code Online (Sandbox Code Playgroud)
Bri*_*ndy 13
您可以使用h()或html_escape(),但大多数人h()按惯例使用. h()是html_escape()轨道的缩写.
在你的控制器中:
@stuff = "<b>Hello World!</b>"
Run Code Online (Sandbox Code Playgroud)
在你看来:
<%=h @stuff %>
Run Code Online (Sandbox Code Playgroud)
如果您查看HTML源:您将看到输出而不实际加粗数据.即它被编码为<b>Hello World!</b>.
它将显示为显示为 <b>Hello World!</b>
比较不同的方法:
> CGI::escapeHTML("quote ' double quotes \"")
=> "quote ' double quotes ""
> Rack::Utils.escape_html("quote ' double quotes \"")
=> "quote ' double quotes ""
> ERB::Util.html_escape("quote ' double quotes \"")
=> "quote ' double quotes ""
Run Code Online (Sandbox Code Playgroud)
我自己编写了与Rails ActiveMailer转义兼容:
def escape_html(str)
CGI.escapeHTML(str).gsub("'", "'")
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
138315 次 |
| 最近记录: |