В предыдущем примере я предложил быстрое решение проблемы, при которой функции strtolower и strtoupper перестают работать с русским текстом. Это решало проблему, согласен, но настоящий программист должен уметь ПРАВИЛЬНО решать задачи. Для правильного решения задачи работы со строками в PHP, будем предварительно использовать функцию setlocale:
string setlocale ( mixed $category , string $locale [, string $… ] )
Вот как она выглядит в общем виде. setlocale явно указывает локаль, с которой будут работать функции. Параметр $category какраз и определяет, на какие функции будет распространяться установка локали, $category может быть:
- LC_ALL - модифицировать все установки
- LC_COLLATE - только сравнения строк, см. strcoll()
- LC_CTYPE - классификация строк, например strtoupper()
- LC_MONETARY - денежные значения
- LC_NUMERIC - числовые значения
- LC_TIME - значения даты/времени
Тоесть мы просто перед вызовами функций для работы со строками/датами/временем/денежными форматами и т.д. должны указать локаль, и дальше функции будут знать с каким текстом они работают:
setlocale(LC_ALL, ‘rus’);
Думаю такое решение задачи является более правильным и корректным.
18.03.2008 в 18:45
Как маленькое примечание добавлю, что второй параметр функции я привел как ‘rus’ , что верно если сервер работает под управлением Windows. Если сервер работает на UNIX’овых системах - параметр может меняться (как вариант ‘ru_RU’).
22.03.2008 в 03:51
А кроме русского с какими языками можно работать?
22.03.2008 в 12:03
Игорь, работать можно с различными языками, только нужно соответственно передавать второй параметр в функцию setlocale. Дополнительную информацию по этой функции как всегда можно найти на php.net, там же можно и найти ссылки на перечень всех языков и их обозначений.
25.03.2008 в 11:54
А можно ли прямые ссылочки?
25.03.2008 в 21:35
http://ua.php.net/manual/ru/function.setlocale.php
28.03.2008 в 02:20
спасибо за ссылку и информацию
29.03.2008 в 01:29
да похоже я решил проблему спасибо за информацию
29.03.2008 в 06:57
очень памагло по чаще к вам буду заходить
30.03.2008 в 04:53
спасибо за ссылку весьма блогодарен
01.04.2008 в 12:20
Надо бы проверить
08.04.2008 в 14:06
Спасибо за информацию! Выношу благодарность за такие новости! Очень полезно! Буду чаще заходить к Вам!
13.04.2008 в 18:20
Спасибо за информацию, очень своевременно:)
13.04.2008 в 19:56
Иногда кстати этот способ не срабатывает, если у хостера не прописаны соответствующие локали. Так что если, что - “трусите” своего хостера.