用字串切割, 抓前 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;
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(資料庫欄位,顯示字數,字串編碼);