PHP strpos中文查找问题
在用PHP strpos函数查找字符串包含关系时,一直返回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
了。
测试strpos返回6,mb_strpos返回2
如果 $a = ‘博客歪麦’; 则怎么都匹配不到 博主试过没 怎么破啊
应该是因为从0开始,所以需要强制比较===的吧