PHP. strtolower(strtoupper) и UTF-8

Речь пойдет о стандартных строковых функциях PHP:

strtoupper — Преобразует строку в верхний регистр

strtolower — Преобразует строку в нижний регистр

Все дело в том, что на кириллицу в кодировке utf8 они вообще не реагируют и строка остаётся без изменений. Конечно, можно воспользоватся функциями mb_strtoupper и mb_strtolower, но они должны присутствовать на сервере хостера, а на шаред хостингах зачастую они не установлены.

Вот функции, которые решают эту проблему:

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

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

Интересное

Отзыв о FirstVDS
При покупке хостинга у FirstVDS мне предложили скидку за годный отзыв в блоге или на форуме....
Git и Bitbucket
Git – это распределенная система контроля версий. Пожалуй, на этом теория заканчивается, так как...
Project Glass — Очки будущего от Google
Компания Google представила суперсовременные «очки дополненной реальности» или Project Glass. Впрочем,...
Проверка сайта на вирусы
Если пользоваться привычной терминологией, то web вирусы не являются вирусами в традиционном...

Комментарии

  • Вячеслав
    16.04.2010 в 18:30
    Рабочие функции для кириллицы в UTF-8:
     — mb_strtoupper ($string, «UTF8»)
     — mb_strtolower ($string, «UTF8»)
    ответить
  • Седьмой
    17.05.2010 в 08:40

    спасибо. копи-паст

    ответить
  • Tania
    11.08.2010 в 17:16

    SPASIBO BOLISHOE!!!

    ответить
  • Простой гасконец
    13.09.2010 в 19:32

    Программист не есть профессия, это — диагноз! Желаю никогда не выздороветь! С Днём программиста!

    ответить
  • yellowcat
    13.09.2010 в 19:38

    Спасибо! И вас так же!

    ответить
  • Игорь
    27.09.2010 в 20:38

    Спасибо огромное, сайт делать надо, а тут проблема такая, функции не работают с кириллицей, хорошо теперь запомню, как заставить переводить в верхний и нижний регистр, теперь бы разобраться, как первый символ строки в верхний регистр перевести, ucfirst не работает, боюсь как бы и остальные функции обработки строк с кириллицей не перестали работать.

    ответить
    • Sergey Kanon
      10.10.2012 в 10:54

      >>>теперь бы разобраться, как первый символ строки в верхний регистр перевести Возможно в сторону mb_convert_case () можно посмотреть.

      ответить
  • Олег
    17.08.2011 в 13:09
    Спасибо…
    немного доработал, для тех у кого в строке и кирилица и латиница function _strtoupper ($string)
    { $small = array ('а','б','в','г','д','е','ё','ж','з','и','й',
    'к','л','м','н','о','п','р','с','т','у','ф',
    'х','ч','ц','ш','щ','э','ю','я','ы','ъ','ь',
    'э', 'ю', 'я','a', 'b', 'c', 'd', 'e', 'f',
    'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
    'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
    'y', 'z');
    $large = array ('А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й',
    'К','Л','М','Н','О','П','Р','С','Т','У','Ф',
    'Х','Ч','Ц','Ш','Щ','Э','Ю','Я','Ы','Ъ','Ь',
    'Э', 'Ю', 'Я','A', 'B', 'C', 'D', 'E', 'F',
    'G', 'H', 'I', 'L', 'K', 'L', 'M', 'N', 'O',
    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
    'Y', 'Z');
    return str_replace ($small, $large, $string);
    }
    ответить
  • Олег
    27.12.2011 в 16:46
    В UTF-8 помогло:
    mb_strtoupper ($str, «UTF-8»);
    mb_strtolower ($str, «UTF-8»);
    ответить

Чтобы оставлять комментарии, авторизируйтесь

Войти через OpenID

рейтинг0+-
Популярные
Точки входа
Наверх