Ruby 板


LINE

※ 引述《shelary (台中喵小咩)》之銘言: : 於是我用 info.split(//u)[0..100] 去切100個字 : 可是 info 裡面已經有 HTM 語法了..去切 100 個字不旦切不準 : 而且還造成 HTML 的語法被切的不完整 : 所以我想說在顯示第一頁的那個 100 字時...先把 HTML 語法都刪掉 : 刪掉HTML後..再去切 100 個字.... : 等點選 more... 之後...才會顯示有含 HTML 的完整版 : 我的問題是....怎樣把 HTML 語法刪掉比較容易? 如果不保留 html 的話,那我目前想到的辦法還算可以處理。 剛剛在想的是,如果要保留 html 再 truncate 的話,實在不好處理, 如: 「今天是我<b>一歲</b>生日」 假設要 truncate 掉一半且保留 html, 這恐怕會變得很複雜。 或許要用純遞迴的方式才會好做,這我暫時還沒什麼好想法。 : 我想的是去尋找 < 和 > 包起來的東西.... : 但是如果使用者的自介裡有 >_< 這類的表情圖案時怎麼辦? : 或是有更好的方法? 請教大家囉 基本上,html parsing 這種複雜到爆炸的事,最好不要自己寫, 人家是一個完整的 project, 自己寫的話會累死的 XD 要灌 tidy, 我自己電腦上是這樣灌的: sudo port install tidy sudo gem install tidy 本程式開始: $KCODE = 'u' require 'jcode' # 拿來算字數 require 'rubygems' require 'tidy' # 由於他不是直接把 lib 吃進去,所以要給他 .so/.dll/.dylib 的路徑: Tidy.path = '/opt/local/lib/libtidy.dylib' require 'open-uri' # 這滿好用的,rails 的話 open 那邊再自己改吧 msg = Tidy.open{ |tidy| tidy.options.input_xml = true tidy.options.output_xml = true # 這兩個要設,不然輸出會有 html header tidy.options.input_encoding = :utf8 tidy.options.output_encoding = :utf8 # 網頁還是 utf-8 好 tidy.clean '<message>' + open('test.xml') + '</message>' # 多加 <message></message> 是為了避免吃掉頭尾 } require 'rexml/document' msg = REXML::Document.new msg words = [] def extract words, elements if elements.kind_of? REXML::Text words << elements.to_s # 是文字就直接儲存 elsif elements.kind_of? REXML::Element elements.each{ |e| extract words, e } # 不是文字就要全部依序抓出來 else raise TypeError.new('what is it? : ' + elements.inspect) # 我不知道會不會有其他 type 的東西? end end extract words, msg puts words.join # 你要的純文字 puts words.join.jsize # 字數 如果真的要保留 html, 應該要在 elements.each 那邊動手腳, 可能要用遞迴的方式,我不是很確定,要再研究。 truncate 時也要考慮 tag 完整性,會非常複雜。 -- Nobody can take anything away from him. Nor can anyone give anything to him. What came from the sea, has returned to the sea. Chrono Cross --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.30.220 ※ 編輯: godfat 來自: 220.134.30.220 (10/03 23:03)
1F:→ shelary:要保留HTML又要切是太困難了..只能把HTML全清掉再切字數 10/06 12:20







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP