以下是代碼:
$len = 19;
$text = "怎么將新聞的很長的標題只顯示前面一些字,后面用.....來代替?";
echo strlen($text)<=$len ? $text : (substr($text,0,$len).chr(0)."....");
|
chr(0)不是null null是什么都沒有,而chr(0)的值是0。表示成16進制是0x00,表示成二進制是00000000 雖然chr(0)不會顯示出什么,但是他是一個字符。 當漢字被截斷時,根據(jù)編碼規(guī)則他總是要把后邊的其他字符拉過來一起作為漢字解釋,這就是出現(xiàn)亂碼的原因。而值為0x81到0xff與0x00組合始終都顯示為“空” 根據(jù)這一特點,在substr的結果后面補上一個chr(0),就可以防止出現(xiàn)亂碼了
注: 編碼 第一字節(jié) 第二字節(jié) gb2312 0xa1-0xf7 0xa1-0xfe gbk 0x81-0xfe 0x81-0xfe 0x40-0x7e big5 0xa1-0xf7 0x81-0xfe 0x40-0x7e
|