上一篇文章中我們了解了使用“自然”算法知道字符串異同的方法,有需要的請(qǐng)看《php一招搞定“自然”算法比較字符串的異同(區(qū)分大小寫)》。這次我們向大家介紹獲取字符串的長(zhǎng)度的方法,有需要的可以參考參考。
在php中,我們需要了解字符串的長(zhǎng)度,方便去做一些事情,也方便了解串。那我們?cè)挷欢嗾f(shuō),這就來(lái)看一下獲取字符串函數(shù)的方法吧。
首先我們來(lái)看一個(gè)小例子。
<?php echo strlen("World grand, welcome home!"); ?>
這個(gè)小例子的結(jié)果是
看到這個(gè)答案的時(shí)候,不知道小伙伴們有沒有把這個(gè)字符串從頭到尾數(shù)一遍。我先說(shuō),肯定要數(shù)一遍啊,萬(wàn)一這個(gè)函數(shù)錯(cuò)了呢?那我多有成就感啊。但是我從頭數(shù)到尾,發(fā)現(xiàn)這個(gè)函數(shù)的長(zhǎng)度還真是26。
這個(gè)函數(shù)沒有問(wèn)題,那我們就來(lái)說(shuō)說(shuō)這個(gè)函數(shù)吧。
strlen() 函數(shù)返回字符串的長(zhǎng)度(字節(jié)數(shù))。strlen() 常常用在循環(huán)和其他函數(shù)中,因?yàn)槟菚r(shí)確定字符串何時(shí)結(jié)束是很重要的。(例如,在循環(huán)中,我們需要在字符串中的最后一個(gè)字符之后結(jié)束循環(huán))
那我們?cè)賮?lái)看一個(gè)例子。
<?php echo strlen("世界盛大,歡迎回家!"); ?>
結(jié)果是
發(fā)現(xiàn)和上面例子的答案不一樣了,對(duì)不對(duì)。一個(gè)參數(shù)是中文,一個(gè)參數(shù)是英文,就有這么大的區(qū)別嗎?中文的加上標(biāo)點(diǎn)符號(hào)明明才10個(gè)字,為什么這個(gè)的長(zhǎng)度確是30,大家想過(guò)嗎?
中文單詞和英文單詞區(qū)別當(dāng)然很大。并且在各種編碼下每個(gè)字母占的字節(jié)也不一樣
在ASCII碼下,一個(gè)英文字母(不分大小寫)占一個(gè)字節(jié)的空間,一個(gè)中文漢字占兩個(gè)字節(jié)的空間。一個(gè)二進(jìn)制數(shù)字序列,在計(jì)算機(jī)中作為一個(gè)數(shù)字單元,一般為8位二進(jìn)制數(shù),換算為十進(jìn)制。最小值-128,最大值127。如一個(gè)ASCII碼就是一個(gè)字節(jié)。
在UTF-8編碼下,一個(gè)英文字符等于一個(gè)字節(jié),一個(gè)中文(含繁體)等于三個(gè)字節(jié)。中文標(biāo)點(diǎn)占三個(gè)字節(jié),英文標(biāo)點(diǎn)占一個(gè)字節(jié)。
在Unicode編碼下,一個(gè)英文等于兩個(gè)字節(jié),一個(gè)中文(含繁體)等于兩個(gè)字節(jié)。中文標(biāo)點(diǎn)占兩個(gè)字節(jié),英文標(biāo)點(diǎn)占兩個(gè)字節(jié)。
我們例子上所用的編碼都是utf-8的,所以一個(gè)中文占三個(gè)字節(jié)。因此10個(gè)中文的長(zhǎng)度高達(dá)30。
就說(shuō)到這里了,有其他想知道的,可以點(diǎn)擊這個(gè)哦?!?→php視頻教程