make excerpt in Ruby

大量地方都会有这样的问题:给大段文字做一个截断当作摘要,但是一定要保证 html markup valid。

最简单的方式是删掉所有的 html 标签然后截断,这样做的结果是产生一陀文字,没有换行,没有任何样式!
方法是:

tr.gsub(/<\/?[^>]*>/, "")

比较好的办法是像这篇文章里说的利用REXML和一个队列去完成,下面的评论中提到用 HTMLEntities 可以改善截断问题,但是在测试中发现会有UTF-8 invalid 问题(需要3bytes,只传2bytes,不知道是不是我数据的问题),于是乎放弃HTMLEntities,这样会有一个小bug,截断后末尾会有个乱码,八成是UTF-8 被截断了。

还有一个用 Tidy 的办法貌似很爽,但是在我这的FreeBSD 6.2 + Ruby 1.8.6 + libtidy_051026 + rubytidy 1.1.2 上遇到一个Bug,暂时放弃

谁有什么更好的方法给说一下 :)

Tags: , , ,

2 Responses to “make excerpt in Ruby”

  1. Suave’s Blog » » 使用ORMapping后数据库设计的问题 Says:

    [...] 相关主题 ActiveRecord中使用的findmake excerpt in RubyRails Cachestring with argument in GetText of railsrender partialrails中的session存储问题rails中的select helperRailsbenchRails with Subversion (SVN) 06.12.4Rail处理Unicode问题Install RMagic on Mac OS X06.11.22利用Rails Freeze生成本地Rails DocRails with TextMate [...]

  2. 小吉 Says:

    老兄,这些我都不懂,我也不知道在哪里留言给你,所以这里留言了,呵呵,不要怪啊,本人笨人一个,我想知道的就是你做那个QQ跟MSN在网页上可以直接聊天的插件,我的2.0怎么用不了,是怎么回事,我想你应该有解决方法,所以给你留言,如果有的话发到我邮箱来,谢谢!

Leave a Reply