先看案例:
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文件中可以查看相關配置
