strlen()函式和mb_strlen()函式
在php中,函式strlen()返回字串的長度。函式原型如下:
int引數string_input為要處理的字串。strlen
(string string_input);
strlen()函式返回字串所佔的位元組長度,乙個英文本母、數字、各種符號均佔乙個位元組,它們的長度均為1。乙個中午字元佔兩個位元組,所以乙個中午字元的長度是2。例如
<?php「echo strlen("www.sunchis.com");」的執行結果:15echo
strlen
("www.sunchis.com"
);
echo
strlen
("三知開發網"
);
?>
「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 ...