呵呵呵呵呵

萝莉有三好,柔体 轻音 易推倒。女神有三宝,干嘛 呵呵 去洗澡。宅男有三好:Dota 基友 破电脑。


php strlen mb_strlen差异与区别

php strlen mb_strlen差异与区别

PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于GB2312的中文编码,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核心函数,Windows 下使用前需要确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存 在并且没有被注释掉,否则会出现未定义函数的问题。Linux 下需要编译这个扩展。

来看看手册中的定义
strlen
strlen — 获取字符串长度
int strlen ( string $string )
返回给定的字符串 string 的长度。

mb_strlen
int mb_strlen ( string $str [, string $encoding ] )
返回给定的字符串 string 的长度。
encoding参数为字符编码。如果省略,则使用内部字符编码。

示例:

<?php    //测试时文件的编码方式要是UTF8   
$str=中文a字1符;   
echo strlen($str).<br>;//14   
echo mb_strlen($str,utf8).<br>;//6   
echo mb_strlen($str,gbk).<br>;//8   
echo mb_strlen($str,gb2312).<br>;//10   
?> 

更多内容:

linux socket设置缓冲区大小
netstat 中recv-q与send-q说明
PHP 用file_put_contents给文件追加数据
TCppWebBrowser中事件触发顺序与示例
嵌入式ARM微处理器CPU选型注意事项

本文链接地址:http://www.hehehehehe.cn/i/779.html