php中文字符截取防亂碼
更新時(shí)間:2008年03月28日 22:26:30 作者:
當(dāng)漢字被截?cái)鄷r(shí),根據(jù)編碼規(guī)則他總是要把后邊的其他字符拉過來一起作為漢字解釋,這就是出現(xiàn)亂碼的原因。而值為0x81到0xff與0x00組合始終都顯示為“空”
根據(jù)這一特點(diǎn),在substr的結(jié)果后面補(bǔ)上一個(gè)chr(0),就可以防止出現(xiàn)亂碼了
先看段代碼
<?php
$len = 15;
$str = "這個(gè)新聞或是文章的標(biāo)題很長(zhǎng),需要只顯示前面一些字,后面用...來代替";
echo strlen($str)<=$len ? $str : (substr($str,0,$len).chr(0)."...");
?>
chr(0)相關(guān)知識(shí):
null是什么都沒有,而chr(0)的值是0。表示成16進(jìn)制是0x00,表示成二進(jìn)制是00000000
雖然chr(0)不會(huì)顯示出什么,但是他是一個(gè)字符。
淡水ps:
如果是UTF-8,UTF-8中的漢字是3個(gè)字節(jié)的,截取的長(zhǎng)度盡量去3的倍數(shù),以避免亂碼的產(chǎn)生
復(fù)制代碼 代碼如下:
<?php
$len = 15;
$str = "這個(gè)新聞或是文章的標(biāo)題很長(zhǎng),需要只顯示前面一些字,后面用...來代替";
echo strlen($str)<=$len ? $str : (substr($str,0,$len).chr(0)."...");
?>
chr(0)相關(guān)知識(shí):
null是什么都沒有,而chr(0)的值是0。表示成16進(jìn)制是0x00,表示成二進(jìn)制是00000000
雖然chr(0)不會(huì)顯示出什么,但是他是一個(gè)字符。
淡水ps:
如果是UTF-8,UTF-8中的漢字是3個(gè)字節(jié)的,截取的長(zhǎng)度盡量去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ù)庫(kù)的解決方法
這篇文章主要介紹了php5.3不能連接mssql數(shù)據(jù)庫(kù)的解決方法,針對(duì)php5.3之后不支持mssql_connect函數(shù)提供了對(duì)應(yīng)的解決方法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12關(guān)于PHP自動(dòng)判斷字符集并轉(zhuǎn)碼的詳解
本篇文章是對(duì)PHP自動(dòng)判斷字符集并轉(zhuǎn)碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06PHP管理依賴(dependency)關(guān)系工具 Composer 安裝與使用
Composer 是PHP中用來管理依賴(dependency)關(guān)系的工具。你可以在自己的項(xiàng)目中聲明所依賴的外部工具庫(kù)(libraries),Composer會(huì)幫你安裝這些依賴的庫(kù)文件。2014-08-08

通達(dá)OA公共代碼 php常用檢測(cè)函數(shù)
從通達(dá)OA公共代碼扒下的php常用檢測(cè)函數(shù)代碼,學(xué)習(xí)php的朋友可以參考下。
2011-12-12