2009年8月20日

PHP中限制文字顯示

若果 Database 內有 100 個字,但我想顯示時只顯示 50 個字之後加三點,請問點寫呢?

用字串切割, 抓前 50 字 再補 . 就好啦 $aa = substr($ori_string, 0, 50 ) . "..." ;
前面老兄的方法就很快了...只是會有一點點危險...
萬一在前50個字內出現了一個英文字....
那切斷點就會給你好幾個亂碼囉
這方法是囉唆了一點....
但會保證你的安全...
   1: $num=50; 



   2: $TEXT="一串好長的字xxxxxxx一串好長的字xxxxxxx一串好長的字xxxxxxx一串好長的字xxxxxxx一串好長的字xxxxxxx一串好長的字xxxxxxx"; 



   3: if(strlen($TEXT) > $num) { 



   4:  for($i=0;$i<$num;$i++) { 



   5:   $ch=substr($TEXT,$i,1); 



   6:   if(ord($ch)>127) $i++; 



   7: } 



   8:  



   9: $TEXT= substr($TEXT,0,$i)."...."; 



  10: } 



  11:  



  12: echo $TEXT;


茶米己經將該先前分享的程式碼改寫成 Function ,原始碼如下:


   1: function cutword($cutstring,$cutno){ 



   2:  if(strlen($cutstring) > $cutno) { 



   3:   for($i=0;$i<$cutno;$i++) { 



   4:    $ch=substr($cutstring,$i,1); 



   5:    if(ord($ch)>127) $i++; 



   6:   } $cutstring= substr($cutstring,0,$i)."..."; 



   7:  } 



   8: return $cutstring; 



   9: }


使用時的語法:


   1: echo cutword(資料庫欄位,顯示字數);


分享給您,您可以試試喔!

相關網址:http://board.justok.net/viewtopic.php?t=2787&highlight=%B7j%B4M

原文出處:http://www.e-dreamer.idv.tw/index.php?article_id=22

YOGO補充一下:

若您的環境允許使用mb_substr的話,YOGO建議使用mb_substr比較不會有裁到中文字變成亂碼的困擾,以上函式YOGO改寫如下:


   1: function cutword($cutstring,$cutno,$language="Big5"){  



   2:  if(mb_strlen($cutstring,$language) > $cutno) {   



   3:    $cutstring= mb_substr($cutstring,0,$cutno,$language)."..."; 



   4:   } 



   5: return $cutstring; 



   6: }



使用時的語法:



   1: echo cutword(資料庫欄位,顯示字數,字串編碼);


基本上若你要截取的資料是BIG-5的中文編碼的話,第3個參數是可以不用填的,以上若有任何問題歡迎隨時提出討論^^


聖誕跑趴歡樂降★韓版假兩件針織連衣裙$890,新款顯瘦棒球服連帽風衣外套下殺$510,冬新款歐美棉襖棉服連帽短款外套限量↘$530,秋冬新款韓版大碼毛領氣質毛料外套↘$680,快上左耳貓網路購物

您好!如圖太小看不清楚,請 點選此處 看詳細內容 左耳貓蝦皮賣場 https://shopee.tw/hrf5168 左耳貓 露天賣場 http://class.ruten.com.tw/user/index00.php?s=starbox 左耳貓粉...