Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


UTF-8 -> др. кириллические кодировки

Поиск:
мда, все мы учились по-немногу, чему-нибудь и как-нибудь :) (с)
Код

function utf8_to_win($string) {
 return str_replace(
  array('\xD0\xB0', '\xD0\xB1', '\xD0\xB2', '\xD0\xB3', '\xD0\xB4', '\xD0\xB5', '\xD1\x91', '\xD0\xB6', '\xD0\xB7', '\xD0\xB8', '\xD0\xB9', '\xD0\xBA', '\xD0\xBB', '\xD0\xBC', '\xD0\xBD', '\xD0\xBE', '\xD0\xBF', '\xD1\x80', '\xD1\x81', '\xD1\x82', '\xD1\x83', '\xD1\x84', '\xD1\x85', '\xD1\x86', '\xD1\x87', '\xD1\x88', '\xD1\x89', '\xD1\x8A', '\xD1\x8B', '\xD1\x8C', '\xD1\x8D', '\xD1\x8E', '\xD1\x8F'),
  array('а',        'б',        'в',        'г',        'д',        'е',        'ё',        'ж',        'з',        'и',        'й',        'к',        'л',        'м',        'н',        'о',        'п',        'р',        'с',        'т',        'у',        'ф',        'х',        'ц',        'ч',        'ш',        'щ',        'ъ',        'ы',        'ь',        'э',        'ю',        'я'),
  $string
 );
}
 
 аналогично делаем для больших букв
Код

function upper_utf8_to_win($string) {
 return str_replace(
  array('\xD0\x90', '\xD0\x91', '\xD0\x92', '\xD0\x93', '\xD0\x94', '\xD0\x95', '\xD0\x81', '\xD0\x96', '\xD0\x97', '\xD0\x98', '\xD0\x99', '\xD0\x9A', '\xD0\x9B', '\xD0\x9C', '\xD0\x9D', '\xD0\x9E', '\xD0\x9F', '\xD1\xA0', '\xD1\xA1', '\xD1\xA2', '\xD1\xA3', '\xD1\xA4', '\xD1\xA5', '\xD1\xA6', '\xD1\xA7', '\xD1\xA8', '\xD1\xA9', '\xD1\xAA', '\xD1\xAB', '\xD1\xAC', '\xD1\xAD', '\xD1\xAE', '\xD1\xAF'),
  array('А',        'Б',        'В',        'Г',        'Д',        'Е',        'Ё',        'Ж',        'З',        'И',        'Й',        'К',        'Л',        'М',        'Н',        'О',        'П',        'Р',        'С',        'Т',        'У',        'Ф',        'Х',        'Ц',        'Ч',        'Ш',        'Щ',        'Ъ',        'Ы',        'Ь',        'Э',        'Ю',        'Я'),
  $string
 );
}
 
 теперь вспоминаем, что вызов двух str_replace занимает много больше времени, чем вызов одного, но с массивом...
посему решаем, что конструкция :

Код

function upper_utf8_to_win($string) {
 return str_replace(
  array('\xD0\x90', '\xD0\x91', '\xD0\x92', '\xD0\x93', '\xD0\x94', '\xD0\x95', '\xD0\x81', '\xD0\x96', '\xD0\x97', '\xD0\x98', '\xD0\x99', '\xD0\x9A', '\xD0\x9B', '\xD0\x9C', '\xD0\x9D', '\xD0\x9E', '\xD0\x9F', '\xD1\xA0', '\xD1\xA1', '\xD1\xA2', '\xD1\xA3', '\xD1\xA4', '\xD1\xA5', '\xD1\xA6', '\xD1\xA7', '\xD1\xA8', '\xD1\xA9', '\xD1\xAA', '\xD1\xAB', '\xD1\xAC', '\xD1\xAD', '\xD1\xAE', '\xD1\xAF'),
  array('А',        'Б',        'В',        'Г',        'Д',        'Е',        'Ё',        'Ж',        'З',        'И',        'Й',        'К',        'Л',        'М',        'Н',        'О',        'П',        'Р',        'С',        'Т',        'У',        'Ф',        'Х',        'Ц',        'Ч',        'Ш',        'Щ',        'Ъ',        'Ы',        'Ь',        'Э',        'Ю',        'Я'),
  $string
 );
}

function utf8_to_win($string) {
 $string = upper_utf8_to_win($string);
 return str_replace(
  array('\xD0\xB0', '\xD0\xB1', '\xD0\xB2', '\xD0\xB3', '\xD0\xB4', '\xD0\xB5', '\xD1\x91', '\xD0\xB6', '\xD0\xB7', '\xD0\xB8', '\xD0\xB9', '\xD0\xBA', '\xD0\xBB', '\xD0\xBC', '\xD0\xBD', '\xD0\xBE', '\xD0\xBF', '\xD1\x80', '\xD1\x81', '\xD1\x82', '\xD1\x83', '\xD1\x84', '\xD1\x85', '\xD1\x86', '\xD1\x87', '\xD1\x88', '\xD1\x89', '\xD1\x8A', '\xD1\x8B', '\xD1\x8C', '\xD1\x8D', '\xD1\x8E', '\xD1\x8F'),
  array('а',        'б',        'в',        'г',        'д',        'е',        'ё',        'ж',        'з',        'и',        'й',        'к',        'л',        'м',        'н',        'о',        'п',        'р',        'с',        'т',        'у',        'ф',        'х',        'ц',        'ч',        'ш',        'щ',        'ъ',        'ы',        'ь',        'э',        'ю',        'я'),
  $string
 );
}


нам не по карману, начинаем объединять...

Код

function utf8_to_win($string) {
 return str_replace(
  array('\xD0\xB0', '\xD0\xB1', '\xD0\xB2', '\xD0\xB3', '\xD0\xB4', '\xD0\xB5', '\xD1\x91', '\xD0\xB6', '\xD0\xB7', '\xD0\xB8', '\xD0\xB9', '\xD0\xBA', '\xD0\xBB', '\xD0\xBC', '\xD0\xBD', '\xD0\xBE', '\xD0\xBF', '\xD1\x80', '\xD1\x81', '\xD1\x82', '\xD1\x83', '\xD1\x84', '\xD1\x85', '\xD1\x86', '\xD1\x87', '\xD1\x88', '\xD1\x89', '\xD1\x8A', '\xD1\x8B', '\xD1\x8C', '\xD1\x8D', '\xD1\x8E', '\xD1\x8F', '\xD0\x90', '\xD0\x91', '\xD0\x92', '\xD0\x93', '\xD0\x94', '\xD0\x95', '\xD0\x81', '\xD0\x96', '\xD0\x97', '\xD0\x98', '\xD0\x99', '\xD0\x9A', '\xD0\x9B', '\xD0\x9C', '\xD0\x9D', '\xD0\x9E', '\xD0\x9F', '\xD1\xA0', '\xD1\xA1', '\xD1\xA2', '\xD1\xA3', '\xD1\xA4', '\xD1\xA5', '\xD1\xA6', '\xD1\xA7', '\xD1\xA8', '\xD1\xA9', '\xD1\xAA', '\xD1\xAB', '\xD1\xAC', '\xD1\xAD', '\xD1\xAE', '\xD1\xAF'),
  array('а',        'б',        'в',        'г',        'д',        'е',        'ё',        'ж',        'з',        'и',        'й',        'к',        'л',        'м',        'н',        'о',        'п',        'р',        'с',        'т',        'у',        'ф',        'х',        'ц',        'ч',        'ш',        'щ',        'ъ',        'ы',        'ь',        'э',        'ю',        'я',        'А',        'Б',        'В',        'Г',        'Д',        'Е',        'Ё',        'Ж',        'З',        'И',        'Й',        'К',        'Л',        'М',        'Н',        'О',        'П',        'Р',        'С',        'Т',        'У',        'Ф',        'Х',        'Ц',        'Ч',        'Ш',        'Щ',        'Ъ',        'Ы',        'Ь',        'Э',        'Ю',        'Я'),
  $string
 );
}


получилась немного громоздкая на первый взгляд функция, но ее работоспособность в десятки раз выше, нежели чем у варианта предложенного уважаемым MuToGeN 
 А теперь обратно:
Код
function win_utf8 ($string) {
 $string = convert_cyr_string($string, "w", "i");
 $stringout = "";
 for ($i=0; $i<strlen($string); $i++) {
  $char = ord($string[$i]);
  $stringout .= ($char>175)?"&#".(1040+($char-176)).";":$string[$i];
 }
 return $stringout;
}
 

Автор: Cepera
Сайт: http://www.cepera.org/






Просмотров: 7704

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную