
Мудрый...
   
Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004
Репутация: 122 Всего: 261
|
мда, все мы учились по-немногу, чему-нибудь и как-нибудь  (с) Код | 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; } |
|