PHP字串學習之如何返回漢字或混合字元的長度
如何計算中文字串長度?對於這個問題,我們可能第一反應就是使用strlen()函式,但strlen()函式處理全英文字串還是不錯的,但當了中英文混合或純中文的字串中,就不行了。我們看看下面的例子:
<?php header("Content-type:text/html;charset=utf-8"); //設定字元編碼為utf-8 $str = "歡迎來到PHP中文網!"; echo '字串 “'.$str.'” 的長度為:'.strlen($str).'<br>'; ?>
輸出結果為:
可以看出,strlen()函式因為處理字元的規則不同,無法準確的返回中英文混合或純中文字串的長度。那麼為什麼會返回27呢?
那是因為我們採用的字元編碼為utf-8,在UTF-8 編碼下一個中文字元佔三個位元組。
strlen()函式在ASCII碼下,一箇中文漢字佔兩個位元組的空間;在UTF-8編碼下,一箇中文(含繁體)等於三個位元組;在Unicode編碼下,一箇中文(含繁體)等於兩個位元組。
而上例中的字串“歡迎來到PHP中文網!
”中一個包含了8箇中文字元,3個英文字元,則8*3+3=27
個位元組,則字串長度為27。
但這樣的字串長度不是我們想要的,那樣如何處理中文字元,可以準確的計算出我們想要的中英文混合或純中文字串的長度呢?
PHP提供了一個函式來解決這個問題,那就是mb_strlen() 函式。
還是上個示例,這次使用mb_strlen() 函式來計算字串長度:
<?php header("Content-type:text/html;charset=utf-8"); $str = "歡迎來到PHP中文網!"; echo '字串 “'.$str.'” 的長度為:'.mb_strlen($str,'utf-8').'<br>'; ?>
輸出結果為:
可以看出:字串$str
中,中文+英文+感嘆號,一個有11個字元,輸出結果也為11。對了,找到對的人了~
mb_strlen() 函式中無論是漢字,還是英文、數字、小數點、下劃線和空格,都只佔一個位元組。
下面我們來簡單瞭解一下mb_strlen() 函式。
mb_strlen($string,$encoding)
函式可以透過設定字元編碼從而返回對應的字元數;該函式接受一個必需引數$string(需要檢測的字串)和一個可省略的引數$encoding
(字元編碼),如果省略則使用內部字元編碼。
我們可以透過設定對應的$encoding
引數,就能很好的處理中文字串的長度問題。
好了就說到這裡了,有其他想知道的,可以點選這個哦。→ →
最後給大家推薦閱讀一個經典課程《》,免費的~快來學習啊!
以上就是PHP字串學習之如何返回漢字或混合字元的長度的詳細內容,更多請關注php中文網其它相關文章!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2041/viewspace-2827537/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何擷取指定長度字串區分漢字和字元字串字元
- 計算返回單、雙位元組字元混合字串長度字元字串
- C# 校驗字串是否漢字、其他字元,數字或字元C#字串字元
- PHP判斷字串-全英文字元-英漢混合-純漢字的簡單方法PHP字串字元
- JS判斷字串長度(英文佔1個字元,中文漢字佔2個字元)JS字串字元
- JavaScript 擷取指定長度字串 區分漢字和英文字元JavaScript字串字元
- JavaScript獲取字串的長度區分漢字JavaScript字串
- js獲取字串長度區分漢字和英文JS字串
- js如何擷取字串右邊指定長度的字元JS字串字元
- 求給定字串的平均字元長度字串字元
- 獲得字串實際長度,漢字佔用2個位元組。字串
- JavaScript字串物件 之 根據字元返回位置、根據位置返回字元、字串操作方法JavaScript字串物件字元
- C語言中strlen求字串長度,求字元陣列長度(空字元,數字0,字元0,陣列部分初始化)C語言字串字元陣列
- PHP 學習總結之字串PHP字串
- 第七章——字串(不定長度字元)字串字元
- js檢測漢字的長度程式碼例項JS
- PHP 實現字串翻轉(包含中文漢字)的實現PHP字串
- JavaScript 擷取字串右邊指定長度字元JavaScript字串字元
- 去除字串中的漢字function字串Function
- Jquery Validate自定義驗證規則,一個漢字等於兩個字元長度jQuery字元
- 得到字串 位元組 長度 中文 兩個字元 英文一個字元字串字元
- Oracle學習系列—關於字元數字混合排序和中文排序的問題Oracle字元排序
- python返回漢字的首字母Python
- (字串雜湊表)找到字串中不重複出現字元的最長子串長度字串字元
- 獲取C/C++字串、字元陣列長度C++字串字元陣列
- ABAP字串操作 擷取字元長度 取位數字串字元
- 驗證字串是否包含英文字元、數字或者漢字程式碼例項字串字元
- 獲取字串中的所有漢字字串
- JavaScript生成指定長度的數字與字母字串JavaScript字串
- PHP如何替換多個字串不同位置不同長度的子串PHP字串
- 字串的長度,是字元數量,還是位元組數量?字串字元
- 字元陣列的長度字元陣列
- JS字串學習之怎麼返回給定下標間的子串JS字串
- php 和 j s 對數字,字母,漢子等特殊字串 取反PHP字串
- JS字串學習之計算給定字元的全部出現位置JS字串字元
- 重複輸出字元或字串字元字串
- oracle sql去掉漢字保留數字或字母OracleSQL
- PHP 將數字轉換為漢字PHP