【发布时间】:2010-11-12 20:54:50
【问题描述】:
我正在开发一个 Rails 应用程序,我想知道剥离 CSS 或 JavaScript 块的最佳方法是什么。
<style>
...
</style>
-or-
<script>
...
</script>
我使用 strip_tags 帮助器来处理大部分 HTML,但是当内容包含内联 CSS 时,它会留下一堆 CSS。谢谢
【问题讨论】:
我正在开发一个 Rails 应用程序,我想知道剥离 CSS 或 JavaScript 块的最佳方法是什么。
<style>
...
</style>
-or-
<script>
...
</script>
我使用 strip_tags 帮助器来处理大部分 HTML,但是当内容包含内联 CSS 时,它会留下一堆 CSS。谢谢
【问题讨论】:
推荐的方法是使用sanitize 方法。 strip_tags 方法有些受限且不太安全:
[strip_tags] 从 html 中剥离所有 HTML 标签, 包括cmets。这使用 html-scanner 标记器和它的 HTML 解析能力受限于 html-扫描仪。
如果您使用 sanitize,您会更加安全,只需首先列出您打算允许的标签白名单。
【讨论】:
如果您的应用程序需要用户提供的 CSS,您也可以尝试使用 http://github.com/courtenay/css_file_sanitize/tree/master。
【讨论】:
尝试使用 Nokogiri 库:
require 'nokogiri'
str = " ... " # some html from user
doc = Nokogiri::HTML(str)
doc.css("style,script").remove # remove all tags with content
new_string = doc.to_s
Nokogiri 可以做得更多,但这是你在问题中所要求的 :-)
【讨论】: