Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: utf8_to_win1251 для обработки массивов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: как переписать-то ?
Viper
Отправлено: 05 Октября, 2009 - 10:48:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Собственно есть такая функция

PHP:
скопировать код в буфер обмена
  1. function utf8_to_win1251($text) {
  2.         if (function_exists('iconv')) {
  3.                 return iconv('UTF-8', 'windows-1251//IGNORE', $text);
  4.         } else {
  5.                 $str = strtr($text, array("Р°"=>"а","Р±"=>"б","РІ"=>"в","Рі"=>"г","Рґ"=>"д","Рµ"=>"е","С‘"=>"ё","Р¶"=>"ж","Р·"=>"з","Рё"=>"и","Р№"=>"й","Рє"=>"к","Р»"=>"л","Рј"=>"м","РЅ"=>"н","Рѕ"=>"о","Рї"=>"п","СЂ"=>"р","СЃ"=>"с","С‚"=>"т","Сѓ"=>"у","С„"=>"ф","С…"=>"х","С†"=>"ц","С‡"=>"ч","С€"=>"ш","С‰"=>"щ","СЉ"=>"ъ","С‹"=>"ы","СЊ"=>"ь","СЌ"=>"э","СЋ"=>"ю","СЏ"=>"я","Рђ"=>"А","Р‘"=>"Б","Р’"=>"В","Р“"=>"Г","Р”"=>"Д","Р•"=>"Е","РЃ"=>"Ё","Р–"=>"Ж","Р—"=>"З","Р?"=>"И","Р™"=>"Й","Рљ"=>"К","Р›"=>"Л","Рњ"=>"М","Рќ"=>"Н","Рћ"=>"О","Рџ"=>"П","Р "=>"Р","РЎ"=>"С","Рў"=>"Т","РЈ"=>"У","Р¤"=>"Ф","РҐ"=>"Х","Р¦"=>"Ц","Р§"=>"Ч","РЁ"=>"Ш","Р©"=>"Щ","РЄ"=>"Ъ","Р«"=>"Ы","Р¬"=>"Ь","Р­"=>"Э","Р®"=>"Ю","С–"=>"і","Р†"=>"І","С—"=>"ї","Р‡"=>"Ї","С”"=>"є","Р„"=>"Є","Т‘"=>"ґ","Тђ"=>"Ґ",));
  6.                 return $str;
  7.         }
  8. }


пытаюсь переписать её чтобы понимала и массивы, но пока глухой лес...

PHP:
скопировать код в буфер обмена
  1. function utf8_to_win1251($text) {
  2.         if (is_array($text)) {
  3.                 for ($i=0, $n=count( $text ); $i < $n; $i++) {
  4.                         if (function_exists('iconv')) {
  5.                                 $elem = iconv('UTF-8', 'windows-1251//IGNORE', $text[$i]);
  6.                         }
  7.                 }
  8.         }
  9. }

дальше не пойму как собрать в массив ::unsure.gif::. получается либо кусками собирается, либо если в FOR, то по кол-ву элементов в массиве.
(Добавление)
сделал так. незнаю насколько правильно...

PHP:
скопировать код в буфер обмена
  1. function utf8_to_win1251(&$text) {
  2.         if (is_array($text)) {
  3.                 for ($i=0, $n=count( $text ); $i < $n; $i++) {
  4.                         if (function_exists('iconv')) {
  5.                                 $elem[] = iconv('UTF-8', 'windows-1251//IGNORE', $text[$i]);
  6.                         } else {
  7.                                 $elem[] = strtr($text[$i], array("Р°"=>"а","Р±"=>"б","РІ"=>"в","Рі"=>"г","Рґ"=>"д","Рµ"=>"е","С‘"=>"ё","Р¶"=>"ж","Р·"=>"з","Рё"=>"и","Р№"=>"й","Рє"=>"к","Р»"=>"л","Рј"=>"м","РЅ"=>"н","Рѕ"=>"о","Рї"=>"п","СЂ"=>"р","СЃ"=>"с","С‚"=>"т","Сѓ"=>"у","С„"=>"ф","С…"=>"х","С†"=>"ц","С‡"=>"ч","С€"=>"ш","С‰"=>"щ","СЉ"=>"ъ","С‹"=>"ы","СЊ"=>"ь","СЌ"=>"э","СЋ"=>"ю","СЏ"=>"я","Рђ"=>"А","Р‘"=>"Б","Р’"=>"В","Р“"=>"Г","Р”"=>"Д","Р•"=>"Е","РЃ"=>"Ё","Р–"=>"Ж","Р—"=>"З","Р?"=>"И","Р™"=>"Й","Рљ"=>"К","Р›"=>"Л","Рњ"=>"М","Рќ"=>"Н","Рћ"=>"О","Рџ"=>"П","Р "=>"Р","РЎ"=>"С","Рў"=>"Т","РЈ"=>"У","Р¤"=>"Ф","РҐ"=>"Х","Р¦"=>"Ц","Р§"=>"Ч","РЁ"=>"Ш","Р©"=>"Щ","РЄ"=>"Ъ","Р«"=>"Ы","Р¬"=>"Ь","Р­"=>"Э","Р®"=>"Ю","С–"=>"і","Р†"=>"І","С—"=>"ї","Р‡"=>"Ї","С”"=>"є","Р„"=>"Є","Т‘"=>"ґ","Тђ"=>"Ґ",));
  8.                         }
  9.                 }
  10.                 return $elem;
  11.         } else {
  12.                 if (function_exists('iconv')) {
  13.                         return iconv('UTF-8', 'windows-1251//IGNORE', $text);
  14.                 } else {
  15.                         $string = strtr($text, array("Р°"=>"а","Р±"=>"б","РІ"=>"в","Рі"=>"г","Рґ"=>"д","Рµ"=>"е","С‘"=>"ё","Р¶"=>"ж","Р·"=>"з","Рё"=>"и","Р№"=>"й","Рє"=>"к","Р»"=>"л","Рј"=>"м","РЅ"=>"н","Рѕ"=>"о","Рї"=>"п","СЂ"=>"р","СЃ"=>"с","С‚"=>"т","Сѓ"=>"у","С„"=>"ф","С…"=>"х","С†"=>"ц","С‡"=>"ч","С€"=>"ш","С‰"=>"щ","СЉ"=>"ъ","С‹"=>"ы","СЊ"=>"ь","СЌ"=>"э","СЋ"=>"ю","СЏ"=>"я","Рђ"=>"А","Р‘"=>"Б","Р’"=>"В","Р“"=>"Г","Р”"=>"Д","Р•"=>"Е","РЃ"=>"Ё","Р–"=>"Ж","Р—"=>"З","Р?"=>"И","Р™"=>"Й","Рљ"=>"К","Р›"=>"Л","Рњ"=>"М","Рќ"=>"Н","Рћ"=>"О","Рџ"=>"П","Р "=>"Р","РЎ"=>"С","Рў"=>"Т","РЈ"=>"У","Р¤"=>"Ф","РҐ"=>"Х","Р¦"=>"Ц","Р§"=>"Ч","РЁ"=>"Ш","Р©"=>"Щ","РЄ"=>"Ъ","Р«"=>"Ы","Р¬"=>"Ь","Р­"=>"Э","Р®"=>"Ю","С–"=>"і","Р†"=>"І","С—"=>"ї","Р‡"=>"Ї","С”"=>"є","Р„"=>"Є","Т‘"=>"ґ","Тђ"=>"Ґ",));
  16.                         return $string;
  17.                 }
  18.         }
  19. }


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DeepVarvar Супермодератор
Отправлено: 05 Октября, 2009 - 11:33:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




str_replace($in,$out,$text);

А так не проще?
 
 Top
Viper
Отправлено: 05 Октября, 2009 - 12:23:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




DeepVarvar пишет:
str_replace($in,$out,$text);

А так не проще?


так все равно массив замены прийдется делать.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DeepVarvar Супермодератор
Отправлено: 05 Октября, 2009 - 13:06:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




я к тому что функцию не надо писать\обьявлять

она и так есть...
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //в цикле
  3. str_replace($in,$out,$text[$index]);
  4. ?>
 
 Top
amonsh
Отправлено: 12 Октября, 2009 - 13:11:23
Post Id



Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Сент. 2009  
Откуда: Одесса


Помог: 0 раз(а)




я прямо таки извиняюся а если так?


$content = mb_convert_encoding($content , "UTF-8", "windows-1251");
 
 Top
Vampiref92
Отправлено: 18 Октября, 2013 - 15:59:37
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Самый простой способ с массивами это такой

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. function utf8_to_win1251_array(&$text) {
  3.         if (is_array($text)) {
  4.                 foreach ($text as $key=>$value) {
  5.                         $elem[utf8_to_win1251_array($key)]=utf8_to_win1251_array($value);
  6.                 }
  7.                 return $elem;
  8.         } else {
  9.                 if (function_exists('iconv')) {
  10.                         return iconv('UTF-8', 'windows-1251//IGNORE', $text);
  11.                 } else {
  12.                         $string = strtr($text, array("Р°"=>"а","Р±"=>"б","РІ"=>"в","Рі"=>"г","Рґ"=>"д","Рµ"=>"е","С‘"=>"ё","Р¶"=>"ж","Р·"=>"з","Рё"=>"и","Р№"=>"й","Рє"=>"к","Р»"=>"л","Рј"=>"м","РЅ"=>"н","Рѕ"=>"о","Рї"=>"п","СЂ"=>"р","СЃ"=>"с","С‚"=>"т","Сѓ"=>"у","С„"=>"ф","С…"=>"х","С†"=>"ц","С‡"=>"ч","С€"=>"ш","С‰"=>"щ","СЉ"=>"ъ","С‹"=>"ы","СЊ"=>"ь","СЌ"=>"э","СЋ"=>"ю","СЏ"=>"я","Рђ"=>"А","Р‘"=>"Б","Р’"=>"В","Р“"=>"Г","Р”"=>"Д","Р•"=>"Е","РЃ"=>"Ё","Р–"=>"Ж","Р—"=>"З","Р?"=>"И","Р™"=>"Й","Рљ"=>"К","Р›"=>"Л","Рњ"=>"М","Рќ"=>"Н","Рћ"=>"О","Рџ"=>"П","Р "=>"Р","РЎ"=>"С","Рў"=>"Т","РЈ"=>"У","Р¤"=>"Ф","РҐ"=>"Х","Р¦"=>"Ц","Р§"=>"Ч","РЁ"=>"Ш","Р©"=>"Щ","РЄ"=>"Ъ","Р«"=>"Ы","Р¬"=>"Ь","Р­"=>"Э","Р®"=>"Ю","С–"=>"і","Р†"=>"І","С—"=>"ї","Р‡"=>"Ї","С”"=>"є","Р„"=>"Є","Т‘"=>"ґ","Тђ"=>"Ґ",));
  13.                         return $string;
  14.                 }
  15.         }
  16. }
  17.  
 
 Top
armancho7777777 Супермодератор
Отправлено: 18 Октября, 2013 - 16:11:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. function utf8_to_win1251($text)
  3. {
  4.         if (is_array($text))
  5.         {
  6.                 array_walk_recursive($text, function(&$item){
  7.                         $item = iconv('UTF-8', 'windows-1251', $item);
  8.                 });
  9.                
  10.                 return $text;
  11.         }
  12.        
  13.         return iconv('UTF-8', 'windows-1251', $text);
  14. }
  15.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB