Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Работа функнции strcasecmp() при сравнении русских букв.
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Работа функнции strcasecmp() при сравнении русских букв.

Страниц (1): [1]
 

1. master_alf - 09 Августа, 2011 - 13:18:38 - перейти к сообщению
Приветствую.
Собственно такая проблема.
Фукция strcasecmp(), как заявлено, сравнивает строки без учета регистра. С русскими буквами работает хитро, необходимо поставить правильную локаль.

В моем случае сделано вот так:
PHP:
скопировать код в буфер обмена
  1. setlocale(LC_ALL, "ru_RU.utf8");
  2. $qwe = "Раз";
  3. $asd = "раз";
  4. echo strcasecmp($qwe, $asd);

Результат сравнения строк: -1. т.е. они не равны.
Вывод


В какую сторону копать - ума не приложу. Подскажите, пожалуйста, что сделать, что бы функция верно обрабатывала русские строки?
2. SAD - 09 Августа, 2011 - 13:31:33 - перейти к сообщению
вы неправильно локаль русскую устанавливаете, пошерстите по инету, там найдете
3. morosit - 09 Августа, 2011 - 13:35:14 - перейти к сообщению
а у меня без setlocale 0 выводит, т.е. строки равны
4. SAD - 09 Августа, 2011 - 13:41:02 - перейти к сообщению
ну у вас видимо русская локаль стоит по умолчанию
5. master_alf - 09 Августа, 2011 - 13:55:58 - перейти к сообщению
SAD пишет:
вы неправильно локаль русскую устанавливаете, пошерстите по инету, там найдете

А что значит "не правильно устанавливаю локаль"?
Была бы ошибка в параметрах - PHP бы ругался.
Я сделал так, как указано на php.net. С помощью
посмотрел список локалей:
C POSIX en_US.utf8 ru_RU.utf8
И выбрал ту, что подходит мне: ru_RU.utf8.
Что из этого не верно?

 

Powered by ExBB FM 1.0 RC1