如何在 Ruby 中转义 HTML 属性值中的双引号?
How to escape double quotes in HTML attribute value in Ruby?
ruby 是否有转义转义引号的功能?喜欢
name = "some \"thing\""
"<meta property=\"og:title\" content=\"#{name}\" />"
作为
"<meta property=\"og:title\" content=\"some \\"thing\\"\" />"
简单的方法就是做
name.gsub("\"", "\\"")
但看起来很奇怪
要在 HTML 属性值中正确编码双引号,有几种方法:
- 如果属性值本身由
'...'
分隔,则您可以使用未转义的 "
,反之亦然:(就像 Ruby 中的字符串一样)
<meta property="og:name" content='some "thing"' />
- 如果属性值由
"..."
分隔,可以使用双引号的数字字符引用"
:
<meta property="og:name" content='some "thing"' />
- 或其字符实体引用
"
:
<meta property="og:name" content="some "thing"" />
在 Ruby 中,您可以在此处为元标记字符串调用 CGI.escapeHTML
: (I'm using Ruby's %(...)
percent string literal,因此我不必转义所有 "
)
require 'cgi'
name = 'some "thing"'
meta = %(<meta property="og:name" content="#{CGI.escapeHTML(name)}" />)
#=> "<meta property=\"og:name\" content=\"some "thing"\" />"
puts meta
或者 tag
助手,如果您使用 Rails:
<%= tag(:meta, property: 'og:name', content: name) %>
以上两个输出:
<meta property="og:name" content="some "thing"" />
ruby 是否有转义转义引号的功能?喜欢
name = "some \"thing\""
"<meta property=\"og:title\" content=\"#{name}\" />"
作为
"<meta property=\"og:title\" content=\"some \\"thing\\"\" />"
简单的方法就是做
name.gsub("\"", "\\"")
但看起来很奇怪
要在 HTML 属性值中正确编码双引号,有几种方法:
- 如果属性值本身由
'...'
分隔,则您可以使用未转义的"
,反之亦然:(就像 Ruby 中的字符串一样)<meta property="og:name" content='some "thing"' />
- 如果属性值由
"..."
分隔,可以使用双引号的数字字符引用"
:<meta property="og:name" content='some "thing"' />
- 或其字符实体引用
"
:<meta property="og:name" content="some "thing"" />
在 Ruby 中,您可以在此处为元标记字符串调用 CGI.escapeHTML
: (I'm using Ruby's %(...)
percent string literal,因此我不必转义所有 "
)
require 'cgi'
name = 'some "thing"'
meta = %(<meta property="og:name" content="#{CGI.escapeHTML(name)}" />)
#=> "<meta property=\"og:name\" content=\"some "thing"\" />"
puts meta
或者 tag
助手,如果您使用 Rails:
<%= tag(:meta, property: 'og:name', content: name) %>
以上两个输出:
<meta property="og:name" content="some "thing"" />