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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM