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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 計算返回單、雙位元組字元混合字串長度字元字串
- JavaScript 擷取指定長度字串 區分漢字和英文字元JavaScript字串字元
- JavaScript獲取字串的長度區分漢字JavaScript字串
- JavaScript字串物件 之 根據字元返回位置、根據位置返回字元、字串操作方法JavaScript字串物件字元
- PHP 學習總結之字串PHP字串
- PHP 實現字串翻轉(包含中文漢字)的實現PHP字串
- JavaScript 擷取字串右邊指定長度字元JavaScript字串字元
- 得到字串 位元組 長度 中文 兩個字元 英文一個字元字串字元
- Jquery Validate自定義驗證規則,一個漢字等於兩個字元長度jQuery字元
- 獲取C/C++字串、字元陣列長度C++字串字元陣列
- JS字串學習之計算給定字元的全部出現位置JS字串字元
- JS字串學習之怎麼返回給定下標間的子串JS字串
- PHP如何替換多個字串不同位置不同長度的子串PHP字串
- 獲取字串中的所有漢字字串
- 字元陣列的長度字元陣列
- php 和 j s 對數字,字母,漢子等特殊字串 取反PHP字串
- 寫個方法,找出指定字串中重複最多的字元及其長度字串字元
- php 擷取中英文混合字串PHP字串
- PHP陣列學習之更改鍵/值的大寫或小寫PHP陣列
- java 之 給定固定長度根據字元長分割文件Java字元
- 最長不含重複字元的子字串字元字串
- PHP 將數字轉換為漢字PHP
- 字串或數字反轉字串
- PHP字串數字相加PHP字串
- 字元編碼及空白漢字佔位符字元
- python如何刪除字串的特殊字元Python字串字元
- 正規表示式刪除字串中的漢字字串
- rust學習九.2、集合之字元Rust字元
- Python學習筆記 - 字串,數字Python筆記字串
- LeetCode初級演算法之字串:387 字串中的第一個唯一字元LeetCode演算法字串字元
- 巧用PHP函式或常量快速獲取PHP版本號、最大檔名長度PHP函式
- 漢字之美,拼音之韻
- PHP 判斷一個字元是否在字串中PHP字元字串
- PHP如何獲取最大檔名長度PHP
- python如何返回元組,列表或字典的?Python
- JAVA基礎學習-數字與字串學習總結Java字串
- String字串的最大長度是多少?字串
- LeetCode133:給定一個字串,找出最長的不具有重複字元的子串的長度。例如,“abcabcbb”不具有重複字元的最長子串是“abc”,長度為3。對於“bbbbb”,最長的不具有重複字元的子串是LeetCode字串字元