php 字符串长度的解释

来源:互联网 发布:猎头 数据库 建立 编辑:程序博客网 时间:2024/05/06 21:57

在php中,函数strlen()返回字符串的长度,实际上是计算得到字符串所占的字节长度,在不同的编码下,字符串所占的字节长度是不同的。

列举几个常用的字符编码占用字节情况:

ASCII码:一个ASCII码就是一个字节

UTF8编码:一个英文字符占用一个字节,一个中文(含繁体)占用三个字节

Unicode编码:一个英文字符占用两个字节,一个中文(含繁体)占用两个字节

GBK和GBK2312编码:一个中文(含繁体)占用两个字节

符号:英文标点占一个字节,中文标点占两个字节

在php中计算字符串长度时会出现一些问题,strlen()函数并不能准确的返回字符串的实际长度,当字符串中含有中文,全角符号等情形时,

如:(当前文本为utf8编码)

<?phpecho 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


0 0
原创粉丝点击