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
,暂时放弃



评论:

这个问题也困扰了我很久,有时候截取出来的摘要包含了一半的标签,结果页面就都乱了。。。

 

你可能感兴趣的:(html,Ruby,FreeBSD)