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

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

$num=50;
$TEXT="一串好長的字xxxxxxx一串好長的字xxxxxxx一串好長的字xxxxxxx一串好長的字xxxxxxx一串好長的字xxxxxxx一串好長的字xxxxxxx";
if(strlen($TEXT) > $num) {
 for($i=0;$i<$num;$i++) {
  $ch=substr($TEXT,$i,1);
  if(ord($ch)>127) $i++;
}

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

echo $TEXT;


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

function cutword($cutstring,$cutno){
 if(strlen($cutstring) > $cutno) {
  for($i=0;$i<$cutno;$i++) {
   $ch=substr($cutstring,$i,1);
   if(ord($ch)>127) $i++;
  } $cutstring= substr($cutstring,0,$i)."...";
 }
return $cutstring;
}

使用時的語法:

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改寫如下:

function cutword($cutstring,$cutno,$language="Big5"){  
 if(mb_strlen($cutstring,$language) > $cutno) {   
   $cutstring= mb_substr($cutstring,0,$cutno,$language)."..."; 
  }
return $cutstring;
}

使用時的語法:

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

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


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 優購雲端科技 的頭像
    優購雲端科技

    YOGO生活誌

    優購雲端科技 發表在 痞客邦 留言(0) 人氣()