獲得包含中英文字串的自然長度

Donne發表於2019-02-16

考驗對encoding的意識

程式碼例項:

$str = `大家好abc`;
echo strlen($str);
echo `<br/>`;
echo mb_strlen($str,`utf-8`);

結果是12 , 6

  • strlen()計算的是字串的位元組數,一個英文字元是1位元組,中文字元在GBK編碼下是2位元組,UTF8是3位元組,所以位元組數為 3*3+3 = 12

  • mb_strlen()需要mb_string擴充套件,mixed mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] ),第一個引數是要檢測的字串,第二個引數是編碼格式,多位元組字元被記為 1

相關文章