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