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, R61715184597

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

  • Anatoliy

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

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

  • Кто-то

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

  • Anatoliy

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

  • Максим Нагайченко

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

  • Евгений

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


Leave a reply

;) :| :x :twisted: :) 8O :( :roll: :P :oops: :o :mrgreen: :lol: :idea: :D :evil: :cry: 8) :arrow: :? :?: :!:

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