PHP strpos说不同的克罗地亚字符是相同的:


PHP strpos says different croatian chars are the same: š č

我有以下代码:

$text = 'Tomáš'
echo strpos($text, "č");
# result if 4

我相信它们是不同的字符,为什么PHP告诉我它们是相同的?发生了什么,我该如何纠正?

用于保存源代码文件的编码方式无法对要保存的字符进行编码。不管PHP看到的是什么字符,它都不会比较你认为的字符串。将源代码保存为可以编码所有字符的编码,最好是UTF-8。

您应该尝试使用mb_strpos函数。

根据字符数执行多字节安全的strpos()操作。第一个字符的位置为0,第二个字符的位置为1,依此类推。

对于常规设置,它返回false。

然而,如果你在使用这些特殊字符时遇到麻烦,使用mb_strpos代替strpos应该会有所帮助。

http://php.net/manual/en/function.mb-strpos.php