PHP - функции регистра не работают strtolower, strtoupper, не работает uc_first

Функции strtolower, strtoupper, uc_first корректно преобразуют буквы английского алфавита, однако с русскими буквами не работают. Скорее всего, дело в кодировке.

1. если файлы в кодировке cp1251 пробуем установить соответствующую локаль:
setlocale(LC_ALL, ‘ru_RU.CP1251′);

Для файлов в кодировке UTF-8  следует использовать мультибайтовые функции mb_strtolower, mb_strtoupper… Однако, не каждый хостинг поддерживает mb-расширение.
$var = mb_strtolower($var,'UTF-8') // не забываем указать кодировку в функции mb_strolower, mb_strtoupper

2. Если установка локали не помогла, можно написать собственную функцию:

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

По аналогии, если требуется, можно написать собственные функции вместо strtoupper и uc_first

ps. На мой взгляд, все-таки лучше разобраться с настройками хостинга..

Метки:

Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)

html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)

ссылка (для отправки по почте)

1 комментарий к записи “PHP - функции регистра не работают strtolower, strtoupper, не работает uc_first”

  1. Сергей сообщает :

    а зачем код $str=strtolower($string) если $str больше не будет нигде использоваться?
    [vseprosto.com]

Добавить комментарий