| 函式 | 計算單位 | 中文(UTF-8) | 英文 | 適用場景 |
|---|---|---|---|---|
strlen | 位元組 | 3 bytes/字 | 1 byte/字 | 二進位資料、緩衝區大小 |
mb_strlen | 字元 | 1 char/字 | 1 char/字 | 文字顯示、截斷、驗證 |
| 場景 | 正確函式 | 錯誤示範 |
|---|---|---|
| 表單驗證「標題不超過 50 字」 | mb_strlen($title) <= 50 | strlen($title) <= 50 (中文誤判) |
| 資料庫 VARCHAR(255) 長度檢查 | strlen($str) <= 255 | mb_strlen($str) <= 255 (位元組溢位) |
| 截取前 100 字顯示摘要 | mb_substr($str, 0, 100) | substr($str, 0, 100) (中文斷碼) |
| 計算 JSON 封包大小 | strlen($json) | mb_strlen($json) |
| HTTP Content-Length 標頭 | strlen($body) | mb_strlen($body) |
mb_strlen、mb_substr、mb_strpos、mb_strtolowergrapheme_* 處理 Emoji/複合字元真實視覺長度