[請益] 中文字截斷的方式

看板PHP作者 (歡迎光臨Wiiholic.com)時間17年前 (2009/01/11 00:42), 編輯推噓4(404)
留言8則, 4人參與, 最新討論串1/1
如果我今天想把一長串混合HTML的文字依照長度作截斷,例如部落格文章只留下前面200 個字顯示,並加上閱讀全文的連結。 但是截斷的位置不能在HTML的開始標籤與結束標籤之間,或是標籤之中,造成顯示格式 錯亂,像是不能出現 <p> Example 或是 <img src="http://www 這樣 原本的想法是用堆疊的方式,逐字掃描,當遇到 < 時就 丟入堆疊,當遇到 </ 或 />時 就除掉上一個堆疊,這個方式對正確的HTML是沒問題的,可是大家知道並不是每個人用 HTML都這麼標準,還是有人會用 <img src="..."> 與 <br> 而不用 <img src="..." /> 與 <br/> ,因此就會出現最後堆疊中還有剩餘的值造成判斷錯誤。 雖然可以針對 img br 等標籤作篩選,可是我想知道大家的作法都是怎麼做的呢? P.S. 我知道可以先去掉HTML標籤然後再截斷,可是我想保留連結、圖片等格式 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.172.228 ※ 編輯: rabbithenry 來自: 122.116.172.228 (01/11 00:53)

01/11 00:59, , 1F
可以先strip_tags()之後再擷取前200個字
01/11 00:59, 1F

01/11 01:00, , 2F
strip_tags()可以設定要保留不去除的標籤
01/11 01:00, 2F

01/11 02:26, , 3F
這樣做太複雜了, 你何不讓使用者自己插入繼續閱讀?
01/11 02:26, 3F

01/11 12:20, , 4F
我自己是以<p>...</p>為單位截,也就是一次先出n段落
01/11 12:20, 4F

01/11 12:25, , 5F
我看到的大多是截<br />,但是好像沒看過非到n個字的
01/11 12:25, 5F

01/11 12:26, , 6F
所以,我也覺得要做到原po的所有要求真的蠻麻煩的。
01/11 12:26, 6F

01/11 14:42, , 7F
對唷,可以以<p>為單位來擷取,沒想到這個方法
01/11 14:42, 7F

01/11 14:42, , 8F
謝謝大家的建議,我決定用<p>或\n為單位來擷取了
01/11 14:42, 8F
文章代碼(AID): #19QD0Gdh (PHP)
文章代碼(AID): #19QD0Gdh (PHP)