sanitize()
未关闭代码。
ApplicationHelper
上面的代码片段保留了字符串。我怎么能强迫它附加一个结束s = "<a href='http://example.com'>incomplete"
sanitize(s, :tags => ['a', 'p'])
或者至少剥离</a>
?
答案 0 :(得分:5)
您可以使用正确的HTML解析器来执行此操作。我推荐Nokogiri来完成这项工作:
require 'nokogiri'
# ...
s = "<a href='http://example.com'>incomplete"
Nokogiri::HTML::fragment(sanitize(s, :tags => ['a', 'p'])).to_xml
# => "<a href=\"http://example.com\">incomplete</a>"
这将始终返回有效的XML。当然,您可以将其打包到您自己的帮助方法中,以便于使用。
答案 1 :(得分:2)
更新的答案是
html = "<a href='http://example.com'>incomplete"
html = sanitize(s, tags: %w[a p])
Nokogiri::HTML::DocumentFragment.parse(html).to_html