1. 程式人生 > >strlen和mbstrlen有什麼區別

strlen和mbstrlen有什麼區別

相同點:
strlen和mb_strlen這兩個函式都是用來獲取字串的長度的
不同點:
1.strlen是獲取字串的總位元組數,針對的是單位元組編碼字元。對於多位元組編碼,如gbk和utf8,使用strlen得到的不是字元個數而是總位元組數。使用mb_strlen可以獲取多位元組編碼的字元個數。
注意: 使用mb_strlen必須要開啟mbstring擴充套件和指定字符集

下面用應用例項說明:
strlen(string $string) : int
成功則返回字串 string 的長度;如果 string 為空,則返回 0。

mb_strlen(string $str [,string $encoding=mb_internal_encoding() ] ) : mixed
引數說明:
str
要檢查長度的字串。
encoding
encoding 引數為字元編碼。如果省略,則使用內部字元編碼。
返回值:
返回具有encoding編碼的字串str包含的。多位元組的字元數被計算為1
如果encoding無效則返回false

例項1:

$chuan="this is a test!";
echo strlen($chuan);
echo mb_strlen($chuan);

輸出結果一樣兩個都是15

例項2:

$chuan="我是中國人!";
echo strlen($chuan);
echo mb_strlen($chuan,'utf8');

輸出:
第一個是16,因為一個漢字佔3個位元組,歎號佔一個,加起來是16
第二個是6,因為計算的是字元的個數,每個漢字佔一個字元