這篇文章主要介紹“php如何計(jì)算字符串占多少字節(jié)”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“php如何計(jì)算字符串占多少字節(jié)”文章能幫助大家解決問(wèn)題。
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供肅南裕固族自治企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站建設(shè)、H5建站、小程序制作等業(yè)務(wù)。10年已為肅南裕固族自治眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
在php中,可以利用strlen()函數(shù)來(lái)計(jì)算字符串的字節(jié)數(shù)。該函數(shù)是按字節(jié)來(lái)計(jì)算字符串長(zhǎng)度的,可以統(tǒng)計(jì)字符串所占的字符長(zhǎng)度(字節(jié)數(shù)),語(yǔ)法“strlen(字符串)”。在該函數(shù)的計(jì)算中,英文逗號(hào)、數(shù)字、英文字母、小數(shù)點(diǎn)等都只占一個(gè)字節(jié);而一個(gè)GB2312編碼的漢字占兩個(gè)字節(jié),一個(gè)UTF-8編碼的漢字占三個(gè)字節(jié)。
本教程操作環(huán)境:windows7系統(tǒng)、PHP8.1版、DELL G3電腦
php中不同的編碼格式下字符占用的字節(jié)是不同的:
ANSI編碼格式下一個(gè)中文字符占2個(gè)字節(jié),一個(gè)英文字符占1個(gè)字節(jié);
UTF-8編碼格式下一個(gè)中文字符占3個(gè)字節(jié),一個(gè)英文字符占1個(gè)字節(jié)。
而php中,可以利用strlen()函數(shù)來(lái)計(jì)算字符串的字節(jié)數(shù)。
strlen()函數(shù)是按字節(jié)來(lái)計(jì)算字符串長(zhǎng)度的。
strlen($string)
該函數(shù)只接受一個(gè)參數(shù)$string(要計(jì)算的字符串),如果該參數(shù)傳遞的值為空則返回 0。
strlen()函數(shù)中,(英文狀態(tài)下)逗號(hào)、數(shù)字、英文字母、小數(shù)點(diǎn).
、下劃線、空格等都只占一個(gè)字符長(zhǎng)度(字節(jié))。
'; ?>
分析:上例的字符串中,有10個(gè)英文字母,一個(gè)空格、一個(gè)英文感嘆號(hào);合計(jì):12個(gè)個(gè)字節(jié)。
strlen()函數(shù)中,一個(gè) GB2312 編碼的漢字占兩個(gè)字符長(zhǎng)度(字節(jié)),一個(gè) UTF-8 編碼的漢字占三個(gè)字符長(zhǎng)度(字節(jié))。
'; ?>
上例中,"!"是中文感嘆號(hào),因此占三個(gè)字節(jié)。
'; ?>
上例中,包含兩個(gè)漢字,因此占6個(gè)字節(jié)。
'; ?>
上例中,包含5個(gè)英文字符,6個(gè)漢字,一個(gè)中文感嘆號(hào)和一個(gè)中文逗號(hào);因此占5+(8*3)=29個(gè)字節(jié)。
說(shuō)明:在計(jì)算字符串的字符個(gè)數(shù)時(shí),strlen()函數(shù)只能處理英文字符串,對(duì)中文或中英混合字符串不友好。此時(shí),就需要利用
mb_strlen()函數(shù)了,該函數(shù)可以按字符
來(lái)計(jì)算字符串長(zhǎng)度的。
擴(kuò)展知識(shí):mb_strlen() 函數(shù)
mb_strlen() 函數(shù)同樣可以返回字符串的長(zhǎng)度,語(yǔ)法格式如下:
mb_strlen($str [, $encoding = mb_internal_encoding()])
$str 為需要計(jì)算長(zhǎng)度的字符串
$encoding 是可選參數(shù),為字符編碼,如果省略則使用內(nèi)部字符編碼。
mb_strlen() 函數(shù)的返回值為具有 $encoding 編碼的字符串 $str 所包含的字符數(shù),如果 $encoding 無(wú)效則返回 false。
注意:與 strlen() 函數(shù)不同,在 mb_strlen() 函數(shù)中,無(wú)論是漢字,還是英文、數(shù)字、小數(shù)點(diǎn)、下劃線和空格,都只占一個(gè)字符長(zhǎng)度。
【示例】 使用 mb_strlen() 函數(shù)獲取字符串長(zhǎng)度。
'; $str = "歡迎來(lái)到創(chuàng)新互聯(lián)!"; echo '
字符串 “'.$str.'” 的長(zhǎng)度為:'.mb_strlen($str,'utf-8').'
'; ?>
可以看出,我們可以通過(guò)設(shè)置對(duì)應(yīng)的$encoding
參數(shù),就能很好的處理中文字符串的長(zhǎng)度問(wèn)題。
關(guān)于“php如何計(jì)算字符串占多少字節(jié)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。