前段时间在群里有个网友问了这样一个问题。
请问:
echo strpos("非工",'枪');
输出是1还是0?
当时我想也没想就说是0,后来结果却是1
因为我原来看过PW程序的相关的应用 找到了这段类似的代码:
if (strpos("非工", '枪') !== false) {
echo 'yes~';
}
结果也返回 'yes~'
我翻了一下手册,上面这么说:
strpos() 函数返回字符串在另一个字符串中第一次出现的位置。
如果没有找到该字符串,则返回 false。
继续找,在网上看到了相关的回复:
是字符编码的问题,php源文件编码跟网站是否一致,提示最好使用mbstring或者iconv,strxxx处理gbk编码的中文可能会有问题
同时还有几下的解决办法:
PHP文件的编码肯定不是UTF-8.解决办法有以下几种:
- 文件另存为UTF-8编码
- “首”字mb_convert_encoding成UTF-8(具体针对的是$pos = mb_strpos($tmp_content,"首",1,'utf-8');这个代码)
- file_get_contents的内容转换成GBK再strpos
简单来说呢其实就是两个问题,一个是文件编码问题,一个是具体的函数参数的编码问题,注意到这两点就可以了。