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
Форумы портала PHP.SU :: Версия для печати :: utf8_to_win1251 для обработки массивов
Форумы портала PHP.SU » PHP » Программирование на PHP » utf8_to_win1251 для обработки массивов

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

1. Viper - 05 Октября, 2009 - 10:48:51 - перейти к сообщению
Собственно есть такая функция

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. }
2. DeepVarvar - 05 Октября, 2009 - 11:33:09 - перейти к сообщению
str_replace($in,$out,$text);

А так не проще?
3. Viper - 05 Октября, 2009 - 12:23:24 - перейти к сообщению
DeepVarvar пишет:
str_replace($in,$out,$text);

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


так все равно массив замены прийдется делать.
4. DeepVarvar - 05 Октября, 2009 - 13:06:58 - перейти к сообщению
я к тому что функцию не надо писать\обьявлять

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


$content = mb_convert_encoding($content , "UTF-8", "windows-1251");
6. Vampiref92 - 18 Октября, 2013 - 15:59:37 - перейти к сообщению
Самый простой способ с массивами это такой

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.  
7. armancho7777777 - 18 Октября, 2013 - 16:11:12 - перейти к сообщению
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.  

 

Powered by ExBB FM 1.0 RC1