中文字符串长度问题:strlen和mb_strlen

来源:互联网 发布:后三胆码计算软件 编辑:程序博客网 时间:2024/05/19 03:26
strlen('一二三四五')     //结果为15

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

mb_strlen('一二三四五')     //结果为5

说明

mixed mb_strlen ( string str[,stringencoding = mb_internal_encoding() ] )

获取一个 string 的长度。

参数

str 要检查长度的字符串。 encoding encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

返回具有 encoding 编码的字符串 str 包含的字符数。 多字节的字符被计为 1。如果给定的 encoding 无效则返回 FALSE。

使用前需要开启mbstring扩展:确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函数的问题。

阅读全文
0 0