作者rabbithenry (歡迎光臨Wiiholic.com)
看板PHP
標題[請益] 中文字截斷的方式
時間Sun Jan 11 00:42:53 2009
如果我今天想把一長串混合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)
推 MrMarcus :可以先strip_tags()之後再擷取前200個字 01/11 00:59
→ MrMarcus :strip_tags()可以設定要保留不去除的標籤 01/11 01:00
推 chph :這樣做太複雜了, 你何不讓使用者自己插入繼續閱讀? 01/11 02:26
推 andrew43 :我自己是以<p>...</p>為單位截,也就是一次先出n段落 01/11 12:20
推 andrew43 :我看到的大多是截<br />,但是好像沒看過非到n個字的 01/11 12:25
→ andrew43 :所以,我也覺得要做到原po的所有要求真的蠻麻煩的。 01/11 12:26
→ rabbithenry :對唷,可以以<p>為單位來擷取,沒想到這個方法 01/11 14:42
→ rabbithenry :謝謝大家的建議,我決定用<p>或\n為單位來擷取了 01/11 14:42