1. 程式人生 > >make excerpt in Ruby

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
,暫時放棄



評論:

這個問題也困擾了我很久,有時候截取出來的摘要包含了一半的標籤,結果頁面就都亂了。。。