1、前言php
我的認爲,PHP是世界上最好的語言。 yii2
2、介紹yii
查看yii2底層源碼, 發現 mb_strlen($str, '8bit') , 此函數的不是PHP的核心函數, 因此須要開啓對應的擴展. 函數第一個參數是string類型, 第二個參數是個編碼字符集, 好比: utf-8, gbk, unicode 等. '8bit' 是屬於什麼字符集? 其實8bit是php獨有解析的, 8bit並非一個字符集, 只是php引擎能夠解析它而已. 顧名思義, 一個字節等於八個位, 1byte=8bit.函數
下面是幾個例子:性能
例一:測試
echo strlen('測試'); //結果是 6
echo mb_strlen('測試'); //結果是 2
從結果來看, strlen裏的多字節字符串一個漢字等於3個字節,而mb_strlen中的一個漢字是1個字節. 從而能夠看出mb_strlen的默認編碼字符集是utf-8編碼
例二:spa
1 echo strlen('測試'); 2
3 //結果是 6
4
5 echo mb_strlen('測試'); 6
7 //結果是 2
8
9 echo mb_strlen('測試', '8bit'); 10
11 //結果是 6
從結果來看例子二, mb_strlen('測試', '8bit') == strlen('測試'), 但是爲啥要用mb_strlen() 而不是用 strlen() 呢?code
查詢資料發現, mb_strlen 比 strlen處理多字節字符串的性能更好, 也更加精確. 其次就是返回值的不一樣了, mb_strlen 返回值是混合類型fix, 就是說有int也有boolean, 而strlen的返回值只是int類型.blog