消毒(“你好”)=>你好
但如果我有
sanitize("<3") 它只返回 3
如果不以 < 或 > 结尾,我希望它应该允许字符串
就像我做 sanitize("<3 >4") 它应该简单地返回 <3 >4
消毒(“你好”)=>你好
但如果我有
sanitize("<3") 它只返回 3
如果不以 < 或 > 结尾,我希望它应该允许字符串
就像我做 sanitize("<3 >4") 它应该简单地返回 <3 >4
首先,Rails 的内置清理不处理格式错误的标记。
我强烈建议您使用 Sanitize gem 来处理任何可能出现格式错误的内容:
https://github.com/rgrove/sanitize
但是您的问题是非 html 编码的字符实体。通过 CGI.escape() 运行它们
require 'cgi'
CGI.escape('<3') # => "%3C3"
为了完成:
require 'cgi'
Sanitize.clean( CGI.escape('<3') ) # => "%3C3"
您应该对您的内容进行预清理,以正确编码您想要保留的值。例如:
content.gsub!(/\<3/, '<3')
唯一需要担心的是,您的清洁工可能会双重逃避这一点,&lt;3
这可能会很烦人。至少如果需要的话,这是可以逆转的。
如果不去除无效的括号,就不可能“清理”。一些浏览器会在这种事情上窒息,如果处理不当,它可能会使您的页面完全损坏。