PHP 字串長度如何計算

PHP 字串長度如何計算可能難倒很多剛開始學習 PHP 的設計師,其實計算方式很簡單,應用內建的函數就能做到,PHP 字串長度的計算方式最常用到的有兩個函式分別是 strlen 函數以及 mb_strlen 函數,這兩個函數都可以判斷 PHP 字串的長度,不過差別在於 strlen 函數不能指定字串編碼,對於處理英文字串的長度處理是沒有什麼問題,可是處理繁體中文的字串長度就必須要 mb_strlen 函數才有辦法精準的判斷,我們會在範例中會寫給各位看兩者的應用方式,先來看他們的語法構造,都很簡單。

PHP strlen 函數語法
int strlen( string );
只要將要計算長度的字串放在 strlen 的參數欄位內即可,建議僅用來計算英文或數字字串,其它文字的字串請使用 mb_strlen 函數,要不然很容易出錯。

詳細用法參閱:PHP strlen 函數

PHP mb_strlen 函數語法
mb_strlen( string, string encoding );
mb_strlen 函數比 strlen 還多出了 string encoding 的參數,這就是用來設定字串編碼的參數,例如萬國碼就是 utf-8,這也是目前比較普遍的一種編碼方式。

詳細用法參閱:PHP mb_strlen 函數

PHP 字串長度如何計算範例
原始碼:在新視窗開起範例程式碼文字版
範例的計算結果
24
24
27
9
為了比較兩個 PHP 函數的字串計算結果差異,我們分別準備了一個英文字串以及一個繁體中文字串,第一次使用 strlen 與 mb_strlen 函數統計英文字串長度的結果都是一樣的 24,可是統計繁體中文字串的時候就顯示出差別了,strlen 把範例的繁體中文字串長度統計為 27,而 mb_strlen 則把繁體中文字串長度統計為 9,很顯然的 mb_strlen 才是正確的,所以在利用 PHP 計算繁體中文字串長度的時候,應該要使用 mb_strlen 才對,至於計算英文字串長度則沒有什麼差別。

補充:繁體中文字串一個字長度為 3 個字符,一個英文字母或一個個位數字長度則是 1 個字符,這就是為什麼剛剛在範例中會有 9 與 27 的這兩種結果,strlen 函數把繁體中文字串用英文字符長度去統計了,所以本來應該是 9 個中文字卻變成錯誤的 27。

更多 PHP 字串技巧
分享於 2015-07-20