PHP 多字節處理函數 mb_strlen

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

相關文章
相關標籤/搜索