PHP字符串长度计算strlen()函数使用介绍
strlen()函数和mb_strlen()函数
在PHP中,函数strlen()返回字符串的长度。功能原型如下:
复制代码
代码如下:
(同Internationalorganizations)国际组织
strlen(字符串
string _ input);
参数string_input是要处理的字符串。
函数的作用是:返回字符串的字节长度。一个英文字母,一个数字,各种符号都占一个字节,长度都是1。中午字符占用两个字节,所以中午字符的长度是2。例如
复制代码
代码如下:
& lt?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
回声
strlen(& quot;www . sunchis . com & quot;);
回声
strlen(& quot;三知发展网”);
?& gt
“回声
strlen(& quot;www . sunchis . com & quot;);运行结果:15
“回声
strlen(& quot;三知发展网”);运行结果:15
这里有个问题,一个汉字不占2个字节吗?“三支开发网”,明明是五个汉字,运行结果怎么会是15?
原因是:在计算strlen()时,一个UTF-8汉字将被视为长度为3。中英文混用的情况下,如何准确计算字符串的长度?这里要介绍另一个函数mb_strlen()。mb_strlen()函数与strlen()几乎相同,除了一个指定字符集编码的附加参数。功能原型是:
复制代码
代码如下:
(同Internationalorganizations)国际组织
mb_strlen(字符串
字符串输入,
线
编码);
PHP内置的字符串长度函数strlen无法正确处理中文字符串,它只得到字符串占用的字节数。对于GB2312的中文编码,strlen得到的值是汉字数的两倍,而对于UTF-8的中文编码,则相差三倍(在UTF-8下,一个汉字占用3个字节)。
因此,下面的代码可以准确地计算出中文字符串的长度:
复制代码
代码如下:
& lt?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
$str
=
“三芝桑切斯发展网”;
回声
strlen($str)。”& ltbr & gt”;
//结果:22
回声
mb_strlen($str,& quotUTF8 & quot).”& ltbr & gt”;
//结果:12
$strlen
=
(strlen($str)
mb_strlen($str,& quotUTF8 & quot))/2;
回声
$ strlen
//结果:17
?& gt
原理分析:
在rsen()的计算中,UTF-8的汉字长度为3,因此“三芝桑切斯发展网络”的长度为5×3
7×1=22。
在计算mb_strlen时,如果选择UTF8作为内码,则一个汉字将被计算为长度1,因此“三芝桑切斯开发网络”的长度为5×1
7×1=12。
剩下的都是纯数学,这里就不啰嗦了…
注意:对于mb_strlen($str,& # 39;UTF-8 & # 39;),如果省略第二个参数,将使用PHP的内部编码。内部编码可以通过mb_internal_encoding()函数获得。需要注意的是,mb_strlen不是PHP核心函数。在使用之前,需要确保php.ini中加载了php_mbstring.dll,也就是确保“extension=php_mbstring.dll”这一行存在,并且没有被注释掉,否则会出现函数未定义的问题。