新聞中心
本文操作環(huán)境:Windows7系統(tǒng)、php7.4版、DELL G3電腦

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),臨湘企業(yè)網(wǎng)站建設(shè),臨湘品牌網(wǎng)站建設(shè),網(wǎng)站定制,臨湘網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,臨湘網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
php怎么截取頭一個(gè)中文亂碼?
php解決中文截取亂碼問(wèn)題
針對(duì)截取字符串出現(xiàn)中文亂碼問(wèn)題,網(wǎng)上有很多介紹,也有很多函數(shù),但筆者看著網(wǎng)上的函數(shù),總感覺(jué)有點(diǎn)別扭,
所以自己動(dòng)手寫(xiě)了一個(gè)防止截取字符串時(shí)出現(xiàn)中文亂碼的函數(shù)。
實(shí)現(xiàn)的原理還是比較簡(jiǎn)單,主要是利用ASCII編碼和中文編碼的二進(jìn)制范圍不一致而把它們區(qū)分開(kāi)來(lái),然后,通過(guò)substr()截取字符串的函數(shù)實(shí)現(xiàn)的。
下面給出我寫(xiě)的代碼,注意:我這里只針對(duì)utf-8編碼,其他編碼,看官可以自己手動(dòng)改一下函數(shù),以便支持其他的編碼。
=$length){
return $str;
}
//初始化,統(tǒng)計(jì)字符串的個(gè)數(shù),
$count = 0;
for($i=0;$i<$length;$i++){
//達(dá)到個(gè)數(shù)跳出循環(huán),$i即為要截取的長(zhǎng)度
if($count == $len){
break;
}
$count++;
//ord函數(shù)是獲取字符串的ASCII編碼,大于等于十六進(jìn)制0x80的字符串即為中文字符串
if(ord($str{$i}) >= 0x80){
$i +=2;//中文編碼的字符串的長(zhǎng)度再加2
}
}
//如果要截取的個(gè)數(shù)超過(guò)了字符串的總個(gè)數(shù),那么我們返回全部字符串,不帶省略號(hào)
if($len > $count){
return $str;
}else{
return substr($str,0,$i).'...';
}
}
以上代碼的實(shí)現(xiàn)就是利用單字節(jié)字符的ASCII碼小于0x80。至于要跳過(guò)幾個(gè)字節(jié),這要看具體是什么編碼。
有什么錯(cuò)誤,還望指出。
名稱(chēng)欄目:php怎么截取頭一個(gè)中文亂碼
網(wǎng)頁(yè)URL:http://m.fisionsoft.com.cn/article/cccpsde.html


咨詢(xún)
建站咨詢(xún)
