2

如何不区分大小写地比较俄语字符。我试过了:

if(strcasecmp($content->title, 'О нас') == 0){
        $about=$content->title;
    }

并且

if(strtolower($content->title) == strtolower('О Нас')){
        $about=$content->title;
    }

他们都没有工作。如果我将两个字符串都放在同一个“大小写”中,则返回 true,否则返回 false。$content->title 从 Mysql 数据库返回 'О Нас' 并且第二个字符串也是 'О Нас' 但是如果我创建第二个 str 'О нас' 并使用上述比较之一,它会返回 false,为什么?有什么建议么?

4

1 回答 1

2

我不知道为什么,但使用mb_strtolower函数找到了一种可行的解决方案:

mb_strtolower($content->title) == mb_strtolower('О Нас')

我对为什么第一个选项不起作用的猜测:

来自strtolower文档:

请注意,“字母”由当前语言环境决定。这意味着,例如在默认的“C”语言环境中,诸如变音符号-A (Ä) 之类的字符将不会被转换。

来自mb_strtolower文档:

与 strtolower() 相比,“字母”由 Unicode 字符属性确定。因此,此函数的行为不受语言环境设置的影响,它可以转换任何具有“字母”属性的字符,例如 A-umlaut (Ä)。

还要确保两个可比较的字符串都使用相同的编码(字符串文字使用源文件编码),或者您可以使用mb_strtolower函数的第二个参数来设置每个字符串的编码。

于 2016-05-12T16:37:52.350 回答