$str="宁夏银川市西夏区丽子园北街欣地苑";
$find="宁夏";
$flag=strrpos($str,$find);
echo "<BR>flag:".$flag;//flag:13
if($flag>-1){//find:有
echo "<BR>find:有";
}else{
echo "<BR>find:没有";
}
运行显示结果
flag:13
find:有请教:
flag的值应为0,为何成为13了呢?服务器环境:
PHP Version 4.3.8
Windows NT SERVER 5.2 build 3790 
mysql
Client API version 3.23.49 

解决方案 »

  1.   

    多字节编码建议还是用mb_strpos()
      

  2.   

    flag:0
    find:有我这里显示正常啊... 你是不是搞错了什么或是看错了? 我的php5.2.3 可能是版本问题,你的版本比较老了.
      

  3.   

    strrpos() 函数查找字符串在另一个字符串中最后一次出现的位置。
    如果成功,则返回位置,否则返回 false。
    楼主应该是gbk编码下:$flag=strrpos($str,$find);  所以找到的位置是13,要查找第一个词,应该用strpos(),这个函数才是查找第一次出现的位置。
      

  4.   

    因为你是php4php4里strrpos的第二个参数只能是单个字符,
    你的"宁夏"只取第一个字符是 0xc4,
    而夏的第二个字符也是0xc4所以....
      

  5.   

    strrpos – 从后往前查找并返回首个匹配项的位置
    strpos — 查找并返回首个匹配项的位置
      

  6.   

    我测试也是输出的0  有啊 ,LZ是不是搞错了  
    提醒下strrpos()函数中第二个参数只能是单个字符,如果你输入的是一个字符串 系统也会默认字符串中的第一个字符进行查找,其他字符无效。
      

  7.   


    正解,已改成strpos查询了,谢谢各位!