Rails - strip_tags - 没有捕获DOCTYPE?

时间:2011-03-24 18:57:40

标签: ruby-on-rails ruby ruby-on-rails-3 sanitize strip-tags

鉴于HTML电子邮件,我正在使用以下内容删除文本:

  body = body.gsub(/\\r\\n?/, "\n");
  body = body.gsub(/\\n\\n?/, "\n");
  body = simple_format(body)
  body = strip_tags(body)

但我现在看到一个标签通过了这个:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">

这样的输出如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

任何想法为什么?

3 个答案:

答案 0 :(得分:1)

我想对于strip_tags,看起来它已被弃用,认为doctype语句既不是标记也不是注释。你可以单独剥离它:

string.gsub(/&LT;!?* $ /, '')

答案 1 :(得分:1)

我最终使用Hpricot发短信,工作得很好

答案 2 :(得分:1)

我建议您使用Nokogiri来满足解析需求。它得到了很好的支持,快速,非常灵活,是许多其他HTML / XML类型宝石的基础。它有一个Hpricot模式,虽然我不确定为什么有人会需要它,因为它的语法更全功能。

特别是,要从HTML中删除代码,我建议您查看Loofah。它可以将标签列入白名单,并且可以进行多层清洁。