實現中文字串擷取無亂碼的方法

2021-06-12 15:58:30 字數 867 閱讀 3272

utf-8中文擷取函式

在php中,substr()函式擷取帶有中文字串的話,可能會出現亂碼,這是因為中西文乙個位元組所占有的位元組數不一樣,而substr的長度引數是按照位元組去算的,在gb2312編碼時,乙個中文佔2個位元組,英文為1個位元組,而在utf-8編碼當中,乙個中文可能占有2個或3個位元組,英文或半形標點佔1位元組。

解決方法

utf-8編碼的字元可能由1-3個位元組組成,具體數目可以由第乙個位元組判斷出來。

第乙個位元組大於224的,它與它之後的2個位元組一起組成乙個utf-8字元

第乙個位元組大於192小於224的,它與它之後的1個位元組組成乙個utf-8字元,否則第乙個位元組本身就是乙個英文本元(包括數字和一小部分標點符號)。

<?php

$a="我是程式設計師";

class dx

elseif(ord(substr($string,$n,1))>192)  

else  

}return $str;  }

else   

}public function msub($string,$start,$length)  

else  

}return $str;  }

else   

} }$sub = new dx();

echo $sub->msubstr($a,0,8);//我是程式

?>

除了上面的方法,還可以使用mb_substr來解決,**如下:

<?php

$a="wo的name是中國!";

echo mb_substr($a,0,9,'utf-8');//wo的name是中

echo substr($a,0,15);//wo的name是中

?>

PHP實現中文字串擷取無亂碼的方法

在ascii中,0xa0表示漢字的開始 其中php中的乙個函式ord 函式 此函式功能返回乙個字元的askii碼值 如ord a 65 請看此函式 實現中文字串擷取無 這是明顯用來處理擷取一段漢字的程式,在ascii中,0xa0表示漢字的開始 其中php中的乙個函式ord 函式 此函式功能返回乙個字...

PHP實現中文字串擷取無亂碼

ascii碼 乙個中文漢字佔兩個位元組的空間。utf 8編碼 乙個中文 含繁體 等於三個位元組。unicode編碼 乙個中文 含繁體 等於兩個位元組。我們寫頁面基本都是utf 8編碼 echo substr php中文網 0,5 substr 返回字串子串 substr 第乙個引數是要擷取的字串,第...

PHP中實現中文字串擷取無亂碼的方法

在php中,substr 函式擷取帶有中文字串的話,可能會出現亂碼,這是因為中西文乙個位元組所占有的位元組數不一樣,而substr的長度引數是按照位元組去算的,在gb2312編碼時,乙個中文佔2個位元組,英文為1個位元組,而在utf 8編碼當中,乙個中文可能占有2個或3個位元組,英文或半形標點佔1位...