PHP strlen和mb_strlen的區別
阿新 • • 發佈:2018-12-18
先看案例:
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檔案中可以檢視相關配置