По дате Июль 16th, 2010

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. На мой взгляд, все-таки лучше разобраться с настройками хостинга..

Опубликовано Июль 16, 2010 | автор: levik  |  Комментарий (1) »