1. 程式人生 > >PHP strlen和mb_strlen的區別

PHP strlen和mb_strlen的區別

先看案例:

echo mb_internal_encoding();
echo "<br/>";
$str="D.C is 中國人"; //
echo strlen($str);
echo "<br>";
echo mb_strlen($str,"utf-8"); 
echo "<br/>";
echo mb_strlen($str,"gbk");

輸出結果:

UTF-8
16
10
12

在strlen計算中,對待一個UTF8的中文字元,處理為3個位元組長度,所以為3+1+2+1+9=16個

當mb_strlen的內碼選擇為UTF-8的時候,則會將中文字元當成一個字元,所以為3+1+2+1+3=10;

當mb_strlen的內碼選擇為gbk的時候,一箇中文字元當成1.5個字元來處理來處理,最後就是:3+1+2+1+4.5=11.5

函式:mb_internal_encoding()會得到當前PHP使用的內部編碼

strlen,得到的是字串所佔的位元組數,所以在檢視一個字串的長度的時候,strlen並不能得到我們需要的真實值

mb_strlen 函式可以很好的處理這一點

注意:mb_strlen函式並不是php的核心函式,只是PHP的一個擴充套件函式,使用之前要判斷是否加在的mbstring擴充套件模組,在Php.ini檔案中可以檢視相關配置