字符串长度函数strlen和mb

 在php中常见的计算字符串长度的函数有:strlen和mb_strlen.当字符全是英文字符的时候,两者是一样。这里主要比较一下,中英文混排的时候,两个计算结果。

在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别。
下面通过例子,讲解这两者之间的区别。

先看例子:

1 <?php 
2 //测试时文件的编码方式要是UTF8 
3 $str='中文a字1符'; 
4 echo strlen($str).'<br>';//14 
5 echo mb_strlen($str,'utf8').'<br>';//6 
6 echo mb_strlen($str,'gbk').'<br>';//8 
7 echo mb_strlen($str,'gb2312').'<br>';//10 
8 ?>

结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14,在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6 .

利用这两个函数则可以联合计算出一个中英文混排的串的占位是多少(一个中文字符的占位是2,英文字符是1)
echo (strlen($str) + mb_strlen($str,'UTF8')) / 2;

例如 “中文a字1符” 的strlen($str)值是14,mb_strlen($str)值是6,则可以计算出“中文a字1符”的占位是10.

1 echo mb_internal_encoding();

PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得 到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在 UTF-8编码下,一个汉字占3个字节)。

采用mb_strlen函数可以较好地解决这个问题。mb_strlen的用法和 strlen类似,只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度,可以用 mb_strlen($str,'UTF-8')。如果省略第二个参数,则会使用PHP的内部编码。内部编码可以通过 mb_internal_encoding()函数得到。

需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。

时间: 2024-12-18 01:37:27

字符串长度函数strlen和mb的相关文章

字符串长度函数strlen和mb_strlen的区别示例介绍_php技巧

在php中常见的计算字符串长度的函数有:strlen和mb_strlen.当字符全是英文字符的时候,两者是一样.这里主要比较一下,中英文混排的时候,两个计算结果. 在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别. 下面通过例子,讲解这两者之间的区别. 先看例子: <?php //测试时文件的编码方式要是UTF8 $str='中文a字1符'; echo strlen($str).'<br>';//14 echo

PHP字符串长度计算 - strlen()函数使用介绍_php技巧

strlen()函数和mb_strlen()函数 在PHP中,函数strlen()返回字符串的长度.函数原型如下: 复制代码 代码如下: int strlen(string string_input); 参数string_input为要处理的字符串. strlen()函数返回字符串所占的字节长度,一个英文字母.数字.各种符号均占一个字节,它们的长度均为1.一个中午字符占两个字节,所以一个中午字符的长度是2.例如 复制代码 代码如下: <?php echo strlen("www.sunch

php字符串长度计算strlen和mb_strlen用法

在php中常见的计算字符串长度的函数有:strlen和mb_strlen   比较strlen和mb_strlen   1.strlen PHP内置的字符串长度函数2.mb_strlen 不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保"extension=php_mbstring.dll"这一行存在并且没有被注释掉 当字符全是英文字符的时候,两者是一样的.关于中文的问题,PHP内置的字符串长度函数strlen无法正确处理中文字符串,它

php中处理汉字字符串长度:strlen和mb_strlen

本文转自IT摆渡网欢迎转载,请标明出处 更多php文章请阅读 php问题解决 如这个例子: <html> <meta charset="utf-8"> <body> <?php $name="鸣人"; print "姓名的长度为:".strlen($name); ?> </body> </html> 这个代码的输出结果是:姓名的长度为:6 先探讨一下为什么会出现这个问题:PH

判断字符长度函数strlen实例教程

定义和用法 该strlen ( )函数返回的长度字符串. 他的作用是计算字字符长度的,中文一个字为2 语法 strlen(string)   Parameter Description string Required. Specifies the string to check 来看个简单的例子吧.   <?php echo strlen("Hello world!"); ?>   输出为   12 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也

oracle获取字符串长度函数length()和hengthb()

原文:oracle获取字符串长度函数length()和hengthb() lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节 length(string)计算string所占的字符长度:返回字符串的长度,单位是字符 对于单字节字符,LENGTHB和LENGTH是一样的. 如可以用length('string')=lengthb('string')判断字符串是否含有中文. 注: 一个汉字在Oracle数据库里占多少字节跟数据库的字符集有关,UTF8时,长度为

php截取字符串长度函数详解

常用的字符处理函数  代码如下 复制代码 strstr(string,string) = strchr(,) //从前面第一次出现某个字符串的地方截取到最后 strrchr(string,string) //从某个字符串从最后出现的位置截取到结尾 strpos(string,string[,int]) //某个字符串第一次出现的位置 strrpos(string,string) //某个字符串最后一次出现的位置 substr(string,int[,int]) //从指定位置开始截取字符串,可以

php 字符串长度函数

php strlen() 函数 定义和用法 strlen() 函数返回字符串的长度. 语法 strlen(string)参数 描述 string 必需.规定要检查的字符串.  代码如下 复制代码 <?php echo strlen("www.111cn.net!"); //13 echo strlen("中国人!");//6 strlen得到的值是汉字个数的2倍 ?> 尝试将php_mbstring.dll复制到%windows%目录下  代码如下 复制

测字符串长度函数

函数|字符串 '*************测字符串长度************** Function CheckStringLength(txt)txt=trim(txt)x = len(txt)y = 0for ii = 1 to xif asc(mid(txt,ii,1)) < 0 or asc(mid(txt,ii,1)) >255 then '如果是汉字y = y + 2elsey = y + 1end ifnextCheckStringLength = y End Function