$string='了按';
var_dump(substr_count($string,'税'));
如果将以上代码在文件中保存为GBK编码方式,运行结果为:int(1)。substr_count() 函数是计算子串在字符串中出现的次数,那这就是说,“税”在“了按”中出现了一次!
这个问题解决比较简单:
$string='了按';
var_dump(mb_substr_count($string,'税','utf8'));
用mb_substr_count()函数替换substr_count() 函数,并且第三个参数指定的编码方式要和文件本身的编码方式一致,就不会存在这个问题了。
但是为何substr_count() 函数会有这个问题?或许要查看PHP中substr_count()函数是如何实现的才能找到原因,待研究。