PHP字串長度計算 strlen 函式

2021-06-18 18:35:08 字數 1644 閱讀 7057

strlen()函式和mb_strlen()函式

在php中,函式strlen()返回字串的長度。函式原型如下:

int 

strlen

(string string_input); 

引數string_input為要處理的字串。

strlen()函式返回字串所佔的位元組長度,乙個英文本母、數字、各種符號均佔乙個位元組,它們的長度均為1。乙個中午字元佔兩個位元組,所以乙個中午字元的長度是2。例如

<?php  

echo

strlen

("www.sunchis.com"

);  

echo

strlen

("三知開發網"

);  

?> 

「echo strlen("www.sunchis.com");」的執行結果:15

「echo strlen("三知開發網");」的執行結果:15

這裡有乙個疑問,乙個中文字元不是佔2個位元組嗎?「三知開發網」,明明是五個漢字,執行的結果怎麼會是15?

原因出在這裡:strlen()計算時,對於乙個utf-8的中文字元,會把它當做長度為3來處理。當出現中英文混排的情況下,怎麼準確的計算字串的長度呢?這裡,得引入另外乙個函式mb_strlen()。mb_strlen()函式的用法與strlen()幾乎一摸一樣,只是多了乙個指定字符集編碼的引數。函式原型為:

int mb_strlen(string string_input, string encode); 

php內建的字串長度函式strlen無法正確處理中文字串,它得到的只是字串所佔的位元組數。對於gb2312的中文編碼,strlen得到的值是漢字個數的2倍,而對於utf-8編碼的中文,就是3倍的差異了(在utf-8編碼下,乙個漢字佔3個位元組)。 因此,下面的**能準確計算出中文字串的長度:

<?php  

$str

= "三知sunchis開發網"

;  echo

strlen

($str)."

";               

//結果:22

echo

mb_strlen(

$str

,"utf8")."

";     

//結果:12

$strlen

= (strlen

($str

)+mb_strlen(

$str

,"utf8"

))/2;  

echo

$strlen

;                           

//結果:17

?> 

原理分析:

剩下的就是純數學問題了,在此就不囉嗦了……

注意:對於mb_strlen($str,'utf-8'),如果省略第二個引數,則會使用php的內部編碼。內部編碼可以通過mb_internal_encoding()函式得到。需要注意的是,mb_strlen並不是php核心函式,使用前需要確保在php.ini中載入了php_mbstring.dll,即確保「extension=php_mbstring.dll」這一行存在並且沒有被注釋掉,否則會出現未定義函式的問題。

計算字串長度

獲取指定字串的長度,除英文 數字算乙個長度外其餘字元全算兩個長度 public int length string s return len 匹配中文字元的正規表示式 u4e00 u9fa5 匹配雙位元組字元 包括漢字在內 x00 xff public static boolean isletter...

計算字串的長度

1 cl abap list utilities dynamic output length 類得靜態方法可以計算出字串長度。以下輸出的是7data lv str type string lv len type i lv char type c lv str abc中國 lv char lv str...

字串的長度計算

int length1 str1.length 計算字串str1的長度 int length2 str2.length 計算字串str2的長度 console.writeline 第乙個字串的長度為 str1 str1.length console.writeline 第二個字串的長度為 str2 ...