Иногда случается так, что из-за проблем с локалями в PHP функции strtolower и strtoupper перестают работать с русским текстом. Если нет времени разбираться, а нужно быстро получить результат, можно воспользоваться таким кодом:

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

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

Более подробную информацию всегда можно найти на сайте php.net. В поиске по функциям strtolower и strtoupper.

Комментарии (10) на запись “Проблемы с русским текстом, strtolower и strtoupper?”

  1. Артём Курапов пишет:

    помоему там надо мультибайтовые функции для уникода использовать.. mb_strtoupper

  2. Max Devils пишет:

    Артём Курапов: Какое отношение имеют мультибайтовые(UTF8, UTF16…) текстовые операции к локалям?

  3. Блог программиста » Архив блога » И все-таки используем setlocale для правильного решения задачи с русским текстом пишет:

    […] предыдущем примере я предложил быстрое решение проблемы, при которой […]

  4. Артём Курапов пишет:

    Упс. Не вчитался, да и локали если честно не использовал никогда - переводы делаю сам, да и проблем с запятыми и точками не хочется. У меня просто были проблемы с уникодом в обычных функциях.. там правда и другие кодировки присутсвовали.

  5. Алла пишет:

    Хороший код, множно значительно упростить себе работу, имея его под рукой. Автору спасибо!

  6. Max пишет:

    Автору спасиб

  7. Find пишет:

    Не вчитался, да и локали если честно не использовал никогда - переводы делаю сам, да и проблем с запятыми и точками не хочется. У меня просто были проблемы с уникодом в обычных функциях.. там правда и другие кодировки присутсвовали.

  8. Dima пишет:

    интересно поможет ли мне
    спасибо за мысли попробую

  9. virua пишет:

    “… Если нет времени разбираться, а нужно быстро получить результат, можно воспользоваться …” - как раз мой случай, правда пришлось дописать украинские буквы.

  10. baffolobill пишет:

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

    return $content;
    }
    Может быть для многих разницы нет, но у меня strtolower(’тест’) возвращает ‘ТЕСТ’, даже если вручную локаль установить.

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