用mb_strwidth將utf8中文作2個字元計算

有時候使用UTF8想計算文字的數量時,很簡單很常見就是

最常見的計算方式:

strlen("中文字abcd1234")

結果:17
分析:中文字=9字元(3文字*3字元) + 8個字元 (英數1文字=1字元)

mb_strlen("中文字abcd1234",'UTF-8')

結果:11分析:中文字=3字元 (3文字*1字元) + 8個字元 (英數1文字=1字元)

最常見的統計是這兩個字方法來計算,
但1個中文字以3個字元計算,在前台視覺上有點不合邏輯。
在一些討論區或者註冊會員時,都會看到限制會員名長度,一般中文會當2個字元,比如會員名限制不得多於10個字元,就代表可以使用10個英/數字,或者5個中文字
php有個內置函數,直接可以將中文以2個字元計算

$utf8_text = mb_strwidth("測試123",'UTF-8');
echo $utf8_text;

做個視覺上的測試
1234567890 (mb_strwidth 10字元)
一二三四五 (mb_strwidth 10字元)
這樣看來是否覺得合理很多? 長度選擇中英會員名的用戶在長度限制上是否更公平?

你可能感興趣的:   被PHP5.3廢除的函數該用哪些函數來取來? (列表及取代者函數)