Проблема с регистром русских букв

Тема в разделе "PHP", создана пользователем RzD, 7 июн 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. RzD

    RzD Создатель

    Регистр.:
    17 сен 2008
    Сообщения:
    18
    Симпатии:
    0
    Не получается менять регистр русских букв. Через strtolower ноль эффекта..меняет только у английских букв. Помогите плиз..
     
  2. Phoenix168

    Phoenix168

    Регистр.:
    15 ноя 2007
    Сообщения:
    182
    Симпатии:
    44
    Для перевода символов в нижний регистр используется функция strtolower(), а в верхний - strtoupper(:(

    $str = strtolower ($str);

    $str = strtoupper ($str);

    При изменении регистра русских букв могут возникнуть проблемы, избежать которых поможет правильная настройка локали. Локалью называется совокупность настроек системы, таких как формат даты и времени, язык, кодировка. Для установки локали используется функция SetLocale(), которой следует передать два параметра - категорию устанавливаемых параметров и локаль. Категория может быть следующей:
    LC_TYPE - используется для установки локали перевода символов нижний/верхний регистры.
    LC_NUMERIC - используется для установки локали для функции форматирования дробных чисел.
    LC_TIME - помогает настроить форматированный вывод даты и времени.
    LC_ALL - устанавливает все вышеперечисленные режимы.

    Любая локаль, установленная в системе, имеет свое уникальное имя, по которому можно к ней обратиться. Категория LC_TYPE устанавливает локаль для преобразования символов. Имя активизированной локали для катагории LC_TYPE содержится в элементе с ключом LAND массива GLOBALS (эта переменная окружения LAND). В некоторых случаях - это ru_RU.koi8. Для корректного преобразования символов нужно выполнить функцию:

    setlocale(LC_ALL, "ru_RU.CP1251");
    echo strtolower("TEST_ТЕСТ");

    http://ee.php.net/manual/en/function.setlocale.php
     
    RzD нравится это.
  3. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    если кодировка utf-8, то mb_strtolower
    PHP:
    mb_internal_encoding("UTF-8");
    echo 
    mb_strtolower("СЛово");
    если локаль другая то указать локаль и конвертировать:
    PHP:
    setlocale (LC_ALL'ru_RU.CP1251');
    echo 
    strtolower("СЛово");
    если такая локаль не поддерживается сервером тогда можно конвертировать в utf-8 конвертировать и обратно
    PHP:
    mb_internal_encoding("UTF-8");
    echo 
    iconv("UTF-8""CP1251"mb_strtolower(iconv("CP1251""UTF-8""СЛово")));
    если мультибайтные функции не поддерживаются, тогда просто менять большие буквы на маленькие, тут ещё варианты и примеры
    http://php.net/strtolower

    или просто в css стиле указать регистр букв
    HTML:
    
    .strtolower {
        text-transform: lowercase;
    }
    
     
    RzD нравится это.
  4. RzD

    RzD Создатель

    Регистр.:
    17 сен 2008
    Сообщения:
    18
    Симпатии:
    0
    всем спасибо, получилось =)
     
Статус темы:
Закрыта.