摘要:如果直接使用substr截取中文字符串肯定會(huì)出亂碼的,因?yàn)樗麜?huì)把一個(gè)漢字分成一半,為什么會(huì)這樣,因?yàn)闄C(jī)器內(nèi)部編碼的問題,現(xiàn)在我們來看處理辦法1、使用mbstring擴(kuò)展庫的mb_substr截取就不會(huì)出現(xiàn)亂碼了...
轉(zhuǎn)載請(qǐng)注明來源:php substr中文亂碼解決辦法
如果直接使用substr截取中文字符串肯定會(huì)出亂碼的,因?yàn)樗麜?huì)把一個(gè)漢字分成一半,為什么會(huì)這樣,因?yàn)闄C(jī)器內(nèi)部編碼的問題,現(xiàn)在我們來看處理辦法
1、使用mbstring擴(kuò)展庫的mb_substr截取就不會(huì)出現(xiàn)亂碼了。
2、自己書寫截取函數(shù),但效率不如用mbstring擴(kuò)展庫來得高。
3、如果僅是為了輸出截取的串,可用如下方式實(shí)現(xiàn):substr($str, 0, 30).chr(0).
PHP實(shí)例代碼如下:
- * 可以避免亂碼的截取漢字
- * 參數(shù) $str 為字符串,$start 為開始字符,$len 結(jié)束字符
- * 返回截取后的字符
- */
- function msubstr($str, $start, $len) {
- $tmpstr = "";//開源代碼phpfensi.com
- $strlen = $start + $len;
- for($i = 0; $i < $strlen; $i++) {
- if(ord(substr($str, $i, 1)) > 0xa0) {
- $tmpstr .= substr($str, $i, 2);
- $i++;
- } else
- $tmpstr .= substr($str, $i, 1);
- }
- return $tmpstr;
- }
方法二,php實(shí)現(xiàn)中文字串截取無亂碼的方法,代碼如下:
轉(zhuǎn)載請(qǐng)注明來源:php substr中文亂碼解決辦法
- function gbsubstr($string, $start, $length) {
- if(strlen($string)>$length){
- $str=null;
- $len=$start+$length;
- for($i=$start;$i<$len;$i++){
- if(ord(substr($string,$i,1))>0xa0){
- $str.=substr($string,$i,2);
- $i++;
- }else{
- $str.=substr($string,$i,1);
- }
- }
- return $str.'...';
- }else{
- return $string;
- }
- }
- ?>
哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無需額外費(fèi)用,即可穩(wěn)步提升排名至首頁。歡迎體驗(yàn)最佳的哈爾濱網(wǎng)站建設(shè)。
