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 個位元組 方式計算之後的,並且如果字數超過擷取的要求,這個函式還可以在最後面自動新增『…』。
mb_strimwidth($post_excerpt,0,240,'...','utf-8');
注意,最後新增『utf-8』
編碼引數,可以避免中文擷取亂碼的問題。 中英文本串中統計英文本元個數
工作中遇到如下問題,搜尋網路資源得以解決,記錄以供參考。問題 在一段中英文混合的字串中,通過關關鍵字查詢到某位置p。需要擷取p前後一定長度字元,構成乙個新的字串。問題解析 由於是中貢混合的字串,當向前後擷取長度不當時會出現擷取到中文半個字的情況。面引起出現亂碼的情況。方法 首先確定字串的編碼格式,由...
php 限制字數 PHP中如何正確統計中文字數
php中如何正確統計中文字數 下面的例子,分別使用了 strlen,mb strlen,mb strwidth 這個三個函式去測試統計字串的長度,看看把中文算成幾個位元組 echo strlen 你好abc 輸出 9 echo mb strlen 你好abc utf 8 輸出 5 echo mb s...
Linux中文字工具檢視,分析統計文字
抽取文字的工具 檔案檢視一般選擇cat命令,直接在命令框中檢視檔案中內容,不開啟檔案 cat option file e 顯示行結束符 n 對顯示的每一行進行編號 a 顯示所有的空字元 b 對非空字元進行顯示 s 壓縮連續的空行成一行 檢視文字前幾行 head 命令 head option file...