1. 程式人生 > >php 字串長度的解釋

php 字串長度的解釋

在php中,函式strlen()返回字串的長度,實際上是計算得到字串所佔的位元組長度,在不同的編碼下,字串所佔的位元組長度是不同的。

列舉幾個常用的字元編碼佔用位元組情況:

ASCII碼:一個ASCII碼就是一個位元組

UTF8編碼:一個英文字元佔用一個位元組,一箇中文(含繁體)佔用三個位元組

Unicode編碼:一個英文字元佔用兩個位元組,一箇中文(含繁體)佔用兩個位元組

GBK和GBK2312編碼:一箇中文(含繁體)佔用兩個位元組

符號:英文標點佔一個位元組,中文標點佔兩個位元組

在php中計算字串長度時會出現一些問題,strlen()函式並不能準確的返回字串的實際長度,當字串中含有中文,全形符號等情形時,

如:(當前文字為utf8編碼)

<?php
echo strlen("字串");  // 結果:9
輸出6,函式實際返回的不是字串的字元長度,而是字串所佔的位元組長度。在一些場景下,這並不符合我們的需求,為了解決這個問題,

我們可以使用mb_strlen()函式來協調字串字元長度和位元組長度,真實的計算出其字元長度。由於mb_strlen()不是php內建函式,需要我們

在php擴充套件功能模組中引入php_mbstring.dll,使用格式:int mb_strlen(string string_input, string encode); 

示例:

echo mb_strlen('字串','utf8');//3

補充:關於資料儲存單位的簡單說明
計算機資料儲存基本單位是位元組(Byte,簡稱B),資料傳輸的基本單位是“位”(bit,簡稱b),一個位元組等於8位二進位制,一個位表示一個0或1。

一個位元組的取值範圍為0~255 (2^8)。

1B=8b

1KB=1024B=2^10B

1MB=1024KB=2^20B

1GB=1024MB=2^30B

1TB=1024GB=2^40B

1PB=1024TB=2^50B