PHP strpos中文查找问题
在用PHPstrpos函数查找字符串包含关系时,一直返回false。
如下2个字符串:
$a='歪麦博客'; $b='博客';
字符串$a是从网页获取的内容,字符串$b是从数据库读取的内容。
用PHP的字符查找函数strpos、stripos、mb_strpos、mb_stripos都没能正确返回。
按理说:
$pos=strpos($a,$b); $pos=mb_strpos($a,$b);
都应该返回数字4,(因为中文是双字节的),但实际都返回false。
其原因是$a字符不是UTF-8字符集,需要转换。
所以,在有中文的场景,保险的做法就是先转换字符,再查找:
$pos=strpos(mb_convert_encoding($a,'utf-8'),mb_convert_encoding($b,'utf-8'));
这样就能正确返回4了。