Для изменения регистра символов на PHP существуют встроенные функции strtolower и strtoupper. Как правило их вполне достаточно для решения повседневных задач при программировании на PHP. Как известно, функции strtolower и strtoupper преобразуют строку в нижний и верхний регистр соответственно. Но при неверной настройке локали эти функции выдают весьма странные результаты, что заставляет ломать голову над решением этой проблемы. Чтобы избежать этого предлагаю написать две функции, которые будут корректно работать в любом случае и помогут избежать многих недоразумений. Итак, приступим. Для достижения результата воспользуемся функцией strtr().
Напомню, что эта функция возвращает строку, в которой каждое вхождение любого символа из перечисленных в первом передаваемом параметре заменено на соответствующий символ из строки переданной как второй параметр. Значит наша задача заменить алфавит в верхнем регистре на алфавит в нижнем регистре, чтобы перевести все символы в нижний регистр. И наоборот: алфавит в нижнем регистре заменяем алфавитом в верхнем регистре, чтобы перевести символы в верхний регистр. Давайте рассмотрим исходный код обеих функций: Функция преобразующая строку в нижний регистр: function lower($string) { return strtr( $string, “АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ”, “абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz” ); } Функция преобразующая строку в верхний регистр: function upper($string) { return strtr( $string, “абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz”, “АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ” ); } Как видите ничего сложного. Приведенные выше функции корректно работают даже при неверно установленной локали, что не может не облегчить повседренвый труд программиста. Достаточно включить их в свою библиотеку и вызывать, когда это будет необходимо. Теперь локаль может быть настроена как угодно, а символы будут переводиться в верхний и нижний регистр как это и ожидалось. Согласитесь, что эти функции увеличивают шанс безболезненно перенести сайт на другой хостинг.