Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Изменение регистра функцией strtr


Автор: Vitkaz 6.3.2013, 19:01
Всем привет!

Столкнулся со следующей проблемой.

В строке все кирилические символы нужно заменить на латинские.

Входная строка может быть как на кириллице, так и на латинице. 

задаю массив вида
Код

$converter = array(

                'а' => 'a',   'б' => 'b',   'в' => 'v',

                'г' => 'g',   'д' => 'd',   'е' => 'e',

                'ё' => 'e',   'ж' => 'zh',  'з' => 'z',

                'и' => 'i',   'й' => 'y',   'к' => 'k',

                'л' => 'l',   'м' => 'm',   'н' => 'n', ....

                'А' => 'A',   'Б' => 'B',   'В' => 'V',

                'Г' => 'G',   'Д' => 'D',   'Е' => 'E',

                'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',

                'И' => 'I',   'Й' => 'Y',   'К' => 'K',...
}


передаю его вместе с исходной строкой в функцию strtr. Символы заменяются, но строка почему-то возвращается в нижнем регистре, хотя исходная строка в верхнем.  В чем может быть причина? Помогите пожалуйста.

Автор: Aliance 7.3.2013, 12:11
Сам код покажи.

Автор: Vitkaz 8.3.2013, 07:52
Вот такой  простой код

Код

function translit($string) {

            $converter = array(

                'а' => 'a',   'б' => 'b',   'в' => 'v',

                'г' => 'g',   'д' => 'd',   'е' => 'e',

                'ё' => 'e',   'ж' => 'zh',  'з' => 'z',

                'и' => 'i',   'й' => 'y',   'к' => 'k',....

                

                'А' => 'A',   'Б' => 'B',   'В' => 'V',

                'Г' => 'G',   'Д' => 'D',   'Е' => 'E',

                'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',

                'И' => 'I',   'Й' => 'Y',   'К' => 'K',...
                
            );

            return strtr($string, $converter);

        }

echo translit('КиРиЛлИца - KiRiLlIca');



Тестил на другом сервере, все в порядке. Может ли быть причина в настройках сервера? 

Автор: Gold Dragon 8.3.2013, 10:37
а может проблема в том что функция strtr() работает только с однобайтовыми символами

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)