PHP strtolower и UTF-8

Категория: PHP Комментариев: 5

PHP-функция strtolower () не может корректно работать с кириллицей в кодировке UTF-8, что есть очень нехорошо. Вот решение:

function strtolower_utf8(string $text){
 $text = mb_convert_case($text, MB_CASE_LOWER, "UTF-8");
 return $text;
}

Для корректной работы функции на сервере должна присутствовать библиотека mb_string.

Чуть более громоздкое решение без испоьлзования mb_string:

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

Поблагодарить автора

Webmoney Z163628999150, R617151845974

Комментариев: 5

Комментарии
Авг 2, 2009
19:48
#1 Anatoliy :

Есть решение еще проще :)

$output_str=iconv («CP1251»,"utf-8",strtolower (iconv («utf-8»,"CP1251",$input_str)));

Автор Авг 4, 2009
18:11

Но это, опять-же, будт работать только если на сервере присутствует iconv.

Авг 4, 2009
18:23
#3 Anatoliy :

..."с миру по нитке", а кто то найдет себе нужный вариант.

Фев 5, 2010
18:35

Ребята, используйте ф-цию которая работает с ЮТВ кодировками mb_strtoupper и mb_strtolower, единственно для работы с ней в php.ini должна быть загрузка модуля extension=php_mbstring.dll

Фев 10, 2010
22:14
#5 Евгений :

Спасибо. выручил.

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

Предыдущая запись
«
Следующая запись
»