PHP中如何正確統計中文字數?PHP中有很多函數可以計算字符串的長度,比如下面的例子,分別使用了 strlen,mb_strlen,mb_strwidth 這個三個函數去測試統計字符串的長度,看看把中文算成幾個字節:
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 個字節 方式計算之后的,并且如果字數超過截取的要求,這個函數還可以在最后面自動添加‘…’。
emlog可以用以下代碼統計,已經清除所有的代碼格式
<?php echo mb_strlen(preg_replace(array("'<(.*?)>'is","' '","'\n\r'","' '","'\r'","'\n'"),'',$log_content),'UTF-8');?>
轉載請注明出處 AE博客|墨淵 ? php怎么統計文章字數?
發表評論