Posts Tagged ‘HTMLEntities’

make excerpt in Ruby

Wednesday, May 9th, 2007

大量地方都会有这样的问题:给大段文字做一个截断当作摘要,但是一定要保证 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,暂时放弃

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