В предыдущем примере я предложил быстрое решение проблемы, при которой функции 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’);
Думаю такое решение задачи является более правильным и корректным.