В процессе работы с текстовыми переменными возникает необходимость приведения их содержания в нижний регистр. Но вроде бы простая операция, которая обычно работает на одном сервере вдруг не работает на другом.

Что делать если php функция strtolower не работает?

Ответ обычно прост: причина - не правильно установленна "родная" кодировка, что, в итоге, приводит к потере русских букв в результирующей переменной.

Решение напрашивается само собой:

// устанавливаем русскую кодировку
setlocale(LC_ALL, "ru_RU.CP1251");
// переводим в нижний регистр
$string = strtolower( $string );

Но есть и альтернативный путь. Более медленно, но намного надежнее в результате:

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