{__STYLE__}

ag8登录地址|(最新)点击登录

谈谈PHP中strlen和mb_strlen的区别

### 点击:1407次

    在PHP中,strlen与mb_strlen是求字符串长度的函数,但关于一些初学者来说,假如不看手册,大概不太明白此中的区别。上面经过例子,解说这两者之间的区别。


先看例子:


    后果剖析:在strlen盘算时,看待一个UTF8的中笔墨符是3个长度,以是中文a字1符长度是3*4+2=14,在mb_strlen盘算时,选定内码为UTF8,则会将一其中笔墨符看成长度1来盘算,以是中文a字1符长度是6 .使用这两个函数则可以团结盘算出一其中英文混排的串的占位是几多(一其中笔墨符的占位是2,英笔墨符是1)

    比方中文a字1符 的strlen($str)值是14,mb_strlen($str)值是6,则可以盘算出中文a字1符的占位是10.

    PHP内置的字符串长度函数strlen无法准确处置中笔墨符串,它得 到的只是字符串所占的字节数。关于utf-8的中文编码,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这一行存在而且没有被正文失,不然会呈现未界说函数的题目。

前往顶部
前往顶部