如何比较俄语字符不敏感的情况。 我试过了:
if(strcasecmp($content->title, 'О нас') == 0){
$about=$content->title;
}
以及
if(strtolower($content->title) == strtolower('О Нас')){
$about=$content->title;
}
他们两个都没有用。如果我在同一'case'中创建两个字符串,则返回true,否则返回false。 $ content->标题从Mysql数据库返回'ОНас',第二个字符串也是'ОНас'但是如果我使用上述比较之一进行第二次str'Онас'并返回false,为什么?有什么建议吗?
答案 0 :(得分:1)
我不知道为什么,但找到了一个使用mb_strtolower函数的工作解决方案:
mb_strtolower($content->title) == mb_strtolower('О Нас')
来自strtolower docs:
请注意,'alphabetic'由当前区域设置决定。这意味着,例如在默认的“C”语言环境中,不会转换umlaut-A(Ä)等字符。
来自mb_strtolower docs:
与strtolower()相比,'alphabetic'由Unicode字符属性决定。因此,此函数的行为不受区域设置的影响,并且它可以转换任何具有“字母”属性的字符,例如A-umlaut(Ä)。
还要确保两个可比较的字符串使用相同的编码(字符串文字使用源文件编码),或者您可以使用mb_strtolower
函数的第二个参数来设置每个字符串的编码。