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