详细解释之间的差异和mb_strlenPHPstrlen函数
一个是strlen,另mb_strlen;
首先看看手册中的定义。
strlen
获取字符串长度strlen
Int strlen(字符串的字符串)
返回给定字符串字符串的长度。
mb_strlen
国际mb_strlen(String str {,字符串的编码})
返回给定字符串字符串的长度。
编码参数是字符编码。如果省略省略,则使用内部字符编码。
这样,似乎除了mb_strlen可以通过特征码没有其他差异,以下是两者之间的差异的一个例子。
首先看看例子:
复制代码代码如下所示:
< / /测试PHP文件如果UTF8编码
$str =中国字1字;
回声strlen(str); / / 14。
回声mb_strlen($str,'utf8)。6;
回声mb_strlen($str,'gbk)。8;
回声mb_strlen($str,'gb2312)。10;
>
结果:在所有的计算中,汉字是UTF8 3 1字的长度,所以中国赛长度为3 * 4 + 2 = 14,在mb_strlen计算,选择的编码是UTF8,它将作为1计算长度的汉字,所以汉字长度为6。1。
这两个函数可以用来计算一系列中英文字符串的占有率(一个汉字为2,英语字符为1)。
复制代码代码如下:回声(strlen(str)+ mb_strlen($str,'utf8 ')) / 2;
例如,strlen(str)中国字1的值是14,和mb_strlen(str)的值是6,那么中国字1计算10入住。
复制代码代码如下:mb_internal_encoding(回声);
PHP内置的字符串长度的函数,函数,不正确处理中文字符串,它只有在字符串中的字节数。中文GB2312编码,所有的价值是2倍的汉字数量,并为UTF-8编码的中文,是差3倍(UTF-8编码,一个汉字占3个字节)。
mb_strlen功能的使用可以更好地解决这个问题,mb_strlen使用类似于所有,但它已指定字符编码的第二可选参数。例如,获取UTF-8字符串str的长度,你可以使用mb_strlen($str,'utf-8)。如果第二参数略,PHP的内部编码使用。内部编码可以由mb_internal_encoding获得()函数。
应该指出的是,mb_strlen不是PHP的核心功能。在Windows的使用,它是必要的以确保php_mbstring.dll加载在php.ini。这是确保推广= php_mbstring.dll存在不注明,否则未定义的函数就会出现问题。扩展需要在Linux下编译。