php中可以使用strpos函数与mb_strpos函数获取指定的字符串在别一个字符串中首次出现的位置,也可以使用它们判断一串字符串中是否包含别一个字符串。虽然它们的作用相同,但是在输出的结果上却有很大的差别,那么下面就说一说php中strpos函数与mb_strpos函数的差别。

php中strpos函数与mb_strpos函数的区别

strpos函数与mb_strpos函数区分比较

代码1:

<?php
$str = 'feiniaomy.com';
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 = '飞鸟慕鱼博客feiniaomy.com';
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 = '飞鸟慕鱼博客feiniaomy.com';
echo strpos($str,'博客');
echo '<br/>';
echo mb_strpos($str,'博客');
?>

输出结果:12  4

注:

1、strpos()按字节返回,一个汉字三个字节,并从0开始,所以为12

2、mb_strpos()按字数返回,并从0开始的,所以返回的是4