PHP 中如何正確統計中文字數?這個是困擾我很久的問題,PHP 中有很多函數可以計算字串的長度,例如下面的例子,分別使用了
strlen
mb_strlen
mb_strwidth
這個三個函數去測試統計字串的長度,看看把中文算成幾個位元組:
[code]echo strlen("你好ABC") . ""; # 输出 9 echo mb_strlen("你好ABC", 'UTF-8') . ""; # 输出 5 echo mb_strwidth("你好ABC") . ""; #输出 7
從上面的測試,我們可以看出:
strlen
把中文字符算成3 個位元組,
mb_strlen
不管中文還是英文,都算1 個位元組,而
mb_strwidth
則把中文算成2 個字節,所以
mb_strwidth
才是我們想要的:中文2 個字節,英文1 個位元組。
同樣截取字串也建議使用
mb_strimwidth
,也是依照中文2 個位元組,英文1 個位元組 方式計算之後的,如果字數超過截取的要求,這個函數還可以在最後面自動加'…'。
[code]mb_strimwidth($post_excerpt,0,240,'...','utf-8');
注意,最後加上‘utf-8’編碼參數,可以避免中文截取亂碼的問題。
以上是php 如何統計中文字數的詳細內容。更多資訊請關注PHP中文網其他相關文章!