Strlen() 和非拉丁字符

Strlen() and Non-Latin Characters

我的 switch 语句中有此代码 case strlen($search_term) > 15:。我不明白为什么希腊字符的解析方式不同。例如,拉丁语中长度为 10 的 string 会通过 case,但如果 string 是希腊语,则不会。

除了解决方案,我希望能解释一下我的问题。

strlen() returns 字符串的 字节 ,而不是长度。

许多希腊字符是 2 个字节而不是 1 个字节,这就是为什么你认为你得到了错误的结果。

改用mb_strlen()http://lt.php.net/manual/en/function.mb-strlen.php

希望对您有所帮助