php 如何支持mb_strlen(如何使用php)-编程知识网

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”这一行存在,并且没有被注释掉,否则会出现函数未定义的问题。