首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP strlen vs mb_strlen 字串長度計算差異完整指南:多位元組陷阱與混排寬度計算

     編輯:PHP 綜合知識

核心差異一覽

函式計算單位中文(UTF-8)英文適用場景
strlen位元組3 bytes/字1 byte/字二進位資料、緩衝區大小
mb_strlen字元1 char/字1 char/字文字顯示、截斷、驗證

實測驗證


混排寬度計算 (中文佔 2、英文佔 1)


mb_strlen 可用性檢查


常見應用場景對比

場景正確函式錯誤示範
表單驗證「標題不超過 50 字」mb_strlen($title) <= 50strlen($title) <= 50 (中文誤判)
資料庫 VARCHAR(255) 長度檢查strlen($str) <= 255mb_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)

進階:Grapheme Cluster (使用者感知字元)


總結

  • 文字處理永遠用 mb_* 系列:mb_strlen、mb_substr、mb_strpos、mb_strtolower
  • 二進位/儲存/傳輸用 strlen:資料庫長度、HTTP 標頭、緩衝區分配
  • 專案統一 UTF-8:資料庫、PHP、HTML、連線字符集全鏈路 UTF-8
  • 安裝 intl 擴展:grapheme_* 處理 Emoji/複合字元真實視覺長度
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved