php中strlen()和mb_strlen()函数
一、总结
一句话总结:
mb_strlen()函数 的作用是 通过不同的编码计算字符串的长度: 比如 echo mb_strlen('中文a字1符','utf8').'<br>';//6
1、mb_strlen()函数 使用注意?
开启php_mbstring.dll扩展
mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题
2、解释下列代码的结果(strlen($str)和mb_strlen($str,'utf8'))?
|||-begin
<?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 ?>
|||-end
在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14,
在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6 .
二、php判断字符串长度 strlen()与mb_strlen()函数
转自或参考:php判断字符串长度 strlen()与mb_strlen()函数
https://www.cnblogs.com/ryanzheng/p/8285113.html
PHP strlen() 函数
定义和用法
strlen() 函数返回字符串的长度。
语法
strlen(string)
参数:string
1 <?php 2 3 $str=‘中文a字1符‘; 4 5 echo strlen($str); 6 7 echo ‘<br />‘; 8 9 echo mb_strlen($str,‘UTF8‘); 10 11 //输出结果 12 13 //14 14 15 //6 16 17 ?>
结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14
在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6
mb_strlen()函数
需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保
“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。
<?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 ?>
结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14,在mb_strlen
计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6 .
虽然上面函数可以简单解决一些中英文混合问题,但是不能用于实实际中。
PHP获取中英文混合字符串长度的实现代码如下,1中文=1位,2英文=1位,可自行修改