PHP mb_strlen 函數

PHP mb_strlen 函數的功能,是用來計算 PHP 字串的長度,用法與 strlen 函數非常類似,不過 mb_strlen 函數還多出了一個可以讓讓 PHP 設計師自己決定編碼判斷的參數,在處理不同編碼字串長度判斷的時候相當實用,特別是計算中文字串長度,所以一般來說 PHP 設計師會在需要判斷繁體中文字串長度的時候,採用 PHP mb_strlen 函數來處理,而不是使用 strlen 函數

PHP mb_strlen 函數語法
mb_strlen( $string, string encoding )
PHP mb_strlen 函數有兩個參數,第一個參數是 $string 是必要項目,也就是要計算長度的字串,第二個參數 string encoding 則是用來設置字串編碼用的,會使用 mb_strlen 函數,通常都是為了這個自訂字串編碼的功能而來。

PHP mb_strlen 函數範例
<?php
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';

$TestString = "測試 mb_strlen 函數";

echo '原始字串長度用 strlen 函數的計算結果是:'.strlen($TestString).'<br>';
echo '原始字串長度用 mb_strlen 函數的計算結果是:'.mb_strlen($TestString,'utf-8');
?>
範例的計算結果
原始字串長度用 strlen 函數的計算結果是:23
原始字串長度用 mb_strlen 函數的計算結果是:15
為了比較 strlen 函數與本篇主角 mb_strlen 函數的差異,我們在範例中讓兩個函數分別去判斷原始字串 $TestString 的字串長度,從範例的計算結果可以得知,strlen 計算出字串長度為 23,而 mb_strlen 計算出 15,哪個正確,以常理來說應該是 mb_strlen 才是正確的,為什麼會這樣呢?其實我們也不能說 strlen 的計算結果是錯的,而是 strlen 函數計算的長度是字元數,範例中的繁體中文每個文字占用掉 3 個字元,所以結果才會是 23,而 mb_strlen 則因為設定了字元編碼為萬國碼 utf-8,所以每個中文字會被視為 1,而不是 3,最終計算出來的結果就是 15,標準答案。

延伸閱讀
© Copyright webtech.tw Since 2010