php中文字符截取防亂碼
更新時間:2008年03月28日 22:26:30 作者:
當(dāng)漢字被截斷時,根據(jù)編碼規(guī)則他總是要把后邊的其他字符拉過來一起作為漢字解釋,這就是出現(xiàn)亂碼的原因。而值為0x81到0xff與0x00組合始終都顯示為“空”
根據(jù)這一特點(diǎn),在substr的結(jié)果后面補(bǔ)上一個chr(0),就可以防止出現(xiàn)亂碼了
先看段代碼
<?php
$len = 15;
$str = "這個新聞或是文章的標(biāo)題很長,需要只顯示前面一些字,后面用...來代替";
echo strlen($str)<=$len ? $str : (substr($str,0,$len).chr(0)."...");
?>
chr(0)相關(guān)知識:
null是什么都沒有,而chr(0)的值是0。表示成16進(jìn)制是0x00,表示成二進(jìn)制是00000000
雖然chr(0)不會顯示出什么,但是他是一個字符。
淡水ps:
如果是UTF-8,UTF-8中的漢字是3個字節(jié)的,截取的長度盡量去3的倍數(shù),以避免亂碼的產(chǎn)生
復(fù)制代碼 代碼如下:
<?php
$len = 15;
$str = "這個新聞或是文章的標(biāo)題很長,需要只顯示前面一些字,后面用...來代替";
echo strlen($str)<=$len ? $str : (substr($str,0,$len).chr(0)."...");
?>
chr(0)相關(guān)知識:
null是什么都沒有,而chr(0)的值是0。表示成16進(jìn)制是0x00,表示成二進(jìn)制是00000000
雖然chr(0)不會顯示出什么,但是他是一個字符。
淡水ps:
如果是UTF-8,UTF-8中的漢字是3個字節(jié)的,截取的長度盡量去3的倍數(shù),以避免亂碼的產(chǎn)生
相關(guān)文章
php求今天、昨天、明天時間戳的簡單實(shí)現(xiàn)方法
這篇文章主要介紹了php求今天、昨天、明天時間戳的方法,實(shí)例分析了strtotime函數(shù)的常見使用技巧,非常簡單實(shí)用,需要的朋友可以參考下2016-07-07
php jq jquery getJSON跨域提交數(shù)據(jù)完整版
getJSON跨域提交數(shù)據(jù),想必大家已在很多文章中見到過,下面的示例是php jq jquery getJSON跨域提交數(shù)據(jù)完整代碼,感興趣的朋友可以參考下2013-09-09
php數(shù)組索引的Key加引號和不加引號的區(qū)別
這篇文章主要介紹了php數(shù)組索引的Key加引號和不加引號的區(qū)別,加引號和不加引號是有嚴(yán)重的區(qū)別的,需要的朋友可以參考下2014-08-08
PHP7安裝Redis擴(kuò)展教程【Linux與Windows平臺】
這篇文章主要介紹了PHP7安裝Redis擴(kuò)展的方法,簡單分析了Linux與Windows平臺Redis擴(kuò)展的安裝方法,并提供了一個實(shí)例進(jìn)一步分析了php操作Redis的相關(guān)技巧,需要的朋友可以參考下2016-09-09
PHP實(shí)現(xiàn)使用DOM將XML數(shù)據(jù)存入數(shù)組的方法示例
這篇文章主要介紹了PHP實(shí)現(xiàn)使用DOM將XML數(shù)據(jù)存入數(shù)組的方法,結(jié)合具體實(shí)例形式分析了php基于DOM實(shí)現(xiàn)xml數(shù)據(jù)讀取與解析相關(guān)操作技巧,需要的朋友可以參考下2017-09-09

