Корректное изменение регистра

Как известно, функции strtolower и strtoupper преобразуют строку в нижний и верхний регистр соответственно. Но при неверной настройке локали эти функции выдают весьма странные результаты. Чтобы избежать этого предлогаю написать две функции, которые будут корректно работать в любом случае.

Итак, приступим. Для достижения результата воспользуемся функцией strtr()

Функция преобразующая строку в нижний регистр:

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

Функция преобразующая строку в верхний регистр: 

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

Как видите ничего сложного. Эти функции корректно работают даже при неверно установленной локали.