php中可以使用strpos函数与mb_strpos函数获取指定的字符串在别一个字符串中首次出现的位置,也可以使用它们判断一串字符串中是否包含别一个字符串。虽然它们的作用相同,但是在输出的结果上却有很大的差别,那么下面就说一说php中strpos函数与mb_strpos函数的差别。
strpos函数与mb_strpos函数区分比较
代码1:
<?php $str = 'freexyz.cn'; echo strpos($str,'niao'); echo '<br/>'; echo mb_strpos($str,'niao'); ?>
输出结果:3 3
注:在strpos()函数与mb_strpos()函数在一串英文字符串下,查到同一个字符串返回的结果是一样的。
代码2:
<?php header("Content–type:text/html;chartset=utf-8"); $str = '免费资源网freexyz.cn'; echo strpos($str,'niao'); echo '<br/>'; echo mb_strpos($str,'niao'); ?>
输出结果:21 9
注:
1、在上面的测试代码中,声明了面页为utf-8的编码方式
2、一个汉字在uft-8编码下占3个字节,一个字母占一个字节
3、strpos()返回的按字节返回的位置,mb_strpos()是按字数返回的位置
4、可以参考代码3,可以很直观的查看
代码3:
<?php header("Content–type:text/html;chartset=utf-8"); $str = '免费资源网freexyz.cn'; echo strpos($str,'博客'); echo '<br/>'; echo mb_strpos($str,'博客'); ?>
输出结果:12 4
注:
1、strpos()按字节返回,一个汉字三个字节,并从0开始,所以为12
2、mb_strpos()按字数返回,并从0开始的,所以返回的是4