在php中,可以利用strlen()函數(shù)來計算字符串的字節(jié)數(shù)。該函數(shù)是按字節(jié)來計算字符串長度的,可以統(tǒng)計字符串所占的字符長度(字節(jié)數(shù)),語法“strlen(字符串)”。在該函數(shù)的計算中,英文逗號、數(shù)字、英文字母、小數(shù)點等都只占一個字節(jié);而一個GB2312編碼的漢字占兩個字節(jié),一個UTF-8編碼的漢字占三個字節(jié)。
本教程操作環(huán)境:windows7系統(tǒng)、PHP8.1版、DELL G3電腦
php中不同的編碼格式下字符占用的字節(jié)是不同的:
-
ANSI編碼格式下一個中文字符占2個字節(jié),一個英文字符占1個字節(jié);
-
UTF-8編碼格式下一個中文字符占3個字節(jié),一個英文字符占1個字節(jié)。
而php中,可以利用strlen()函數(shù)來計算字符串的字節(jié)數(shù)。
strlen()函數(shù)是按字節(jié)來計算字符串長度的。
strlen($string)
該函數(shù)只接受一個參數(shù)$string(要計算的字符串),如果該參數(shù)傳遞的值為空則返回 0。
strlen()函數(shù)中,(英文狀態(tài)下)逗號、數(shù)字、英文字母、小數(shù)點.
、下劃線、空格等都只占一個字符長度(字節(jié))。
<?php header("Content-type:text/html;charset=utf-8"); $str = "hello world!"; echo '字符串 “'.$str.'” 占:'.strlen($str).' 個字節(jié)<br>'; ?>
分析:上例的字符串中,有10個英文字母,一個空格、一個英文感嘆號;合計:12個個字節(jié)。
strlen()函數(shù)中,一個 GB2312 編碼的漢字占兩個字符長度(字節(jié)),一個 UTF-8 編碼的漢字占三個字符長度(字節(jié))。
<?php header("Content-type:text/html;charset=utf-8"); $str = "!"; echo '字符串 “'.$str.'” 占:'.strlen($str).' 個字節(jié)<br>'; ?>
上例中,"!"是中文感嘆號,因此占三個字節(jié)。
<?php header("Content-type:text/html;charset=utf-8"); $str = "歡迎"; echo '字符串 “'.$str.'” 占:'.strlen($str).' 個字節(jié)<br>'; ?>
上例中,包含兩個漢字,因此占6個字節(jié)。
<?php header("Content-type:text/html;charset=utf-8"); $str = "hello,歡迎來到這里!"; echo '字符串 “'.$str.'” 占:'.strlen($str).' 個字節(jié)<br>'; ?>
上例中,包含5個英文字符,6個漢字,一個中文感嘆號和一個中文逗號;因此占5+(8*3)=29個字節(jié)。
說明:在計算字符串的字符個數(shù)時,strlen()函數(shù)只能處理英文字符串,對中文或中英混合字符串不友好。此時,就需要利用
mb_strlen()函數(shù)了,該函數(shù)可以按字符
來計算字符串長度的。
擴展知識:mb_strlen() 函數(shù)
mb_strlen() 函數(shù)同樣可以返回字符串的長度,語法格式如下:
mb_strlen($str [, $encoding = mb_internal_encoding()])
-
$str 為需要計算長度的字符串
-
$encoding 是可選參數(shù),為字符編碼,如果省略則使用內(nèi)部字符編碼。
mb_strlen() 函數(shù)的返回值為具有 $encoding 編碼的字符串 $str 所包含的字符數(shù),如果 $encoding 無效則返回 false。
注意:與 strlen() 函數(shù)不同,在 mb_strlen() 函數(shù)中,無論是漢字,還是英文、數(shù)字、小數(shù)點、下劃線和空格,都只占一個字符長度。
【示例】 使用 mb_strlen() 函數(shù)獲取字符串長度。
<?php header("Content-type:text/html;charset=utf-8"); $str = "hello 你好!"; echo '字符串 “'.$str.'” 的長度為:'.mb_strlen($str,"utf-8").'<br>'; $str = "歡迎來到PHP中文網(wǎng)!"; echo '<br>字符串 “'.$str.'” 的長度為:'.mb_strlen($str,'utf-8').'<br>'; ?>
可以看出,我們可以通過設置對應的$encoding
參數(shù),就能很好的處理中文字符串的長度問題。
推薦學習:《PHP視頻教程》
前端(VUE)入門到精通:立即學習