1

给定一封 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">

任何想法为什么?

4

3 回答 3

1

我猜对于 strip_tags,它看起来已经被弃用了,它认为 doctype 语句既不是标签,也不是评论。您可以将其单独剥离:

string.gsub(/<!.*?$/,'')

于 2011-03-24T19:17:42.210 回答
1

我最终使用 Hpricot 来发短信,效果很好

于 2011-03-24T19:20:33.190 回答
1

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

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

于 2011-03-25T04:02:29.473 回答