php中文字符截取防亂碼
更新時間:2008年03月28日 22:26:30 作者:
當(dāng)漢字被截?cái)鄷r,根據(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)的AES 128位加密算法示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的AES 128位加密算法,結(jié)合實(shí)例形式分析了AES 128位加密的相關(guān)概念、原理及php實(shí)現(xiàn)AES 128位加密的相關(guān)操作技巧,注釋中包含詳細(xì)的說明信息,需要的朋友可以參考下2019-09-09淺談PHP Extension的開發(fā)——基礎(chǔ)篇
要開發(fā)PHP擴(kuò)展,第一步要下載PHP源代碼,因?yàn)槔锩嬗虚_發(fā)擴(kuò)展需要的工具。我下載的是PHP最新版本5.3.3,格式為tar.bz2壓縮包。2010-12-12php5.3不能連接mssql數(shù)據(jù)庫的解決方法
這篇文章主要介紹了php5.3不能連接mssql數(shù)據(jù)庫的解決方法,針對php5.3之后不支持mssql_connect函數(shù)提供了對應(yīng)的解決方法,具有一定的參考借鑒價值,需要的朋友可以參考下2014-12-12關(guān)于PHP自動判斷字符集并轉(zhuǎn)碼的詳解
本篇文章是對PHP自動判斷字符集并轉(zhuǎn)碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06PHP管理依賴(dependency)關(guān)系工具 Composer 安裝與使用
Composer 是PHP中用來管理依賴(dependency)關(guān)系的工具。你可以在自己的項(xiàng)目中聲明所依賴的外部工具庫(libraries),Composer會幫你安裝這些依賴的庫文件。2014-08-08