歪麦博客

PHP strpos中文查找问题

在用PHP strpos函数查找字符串包含关系时,一直返回false。

如下2个字符串:

$a = '歪麦博客';
$b = '博客';

字符串$a是从网页获取的内容,字符串$b是从数据库读取的内容。

用PHP的字符查找函数strposstriposmb_strposmb_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了。

 

退出移动版