За последние 24 часа нас посетили 62905 программистов и 1742 робота. Сейчас ищут 878 программистов ...

Перевести 2-х уровневый массив из cp1251 в UTF-8

Тема в разделе "PHP для новичков", создана пользователем Invision, 4 авг 2011.

  1. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Ребят помогите перевести массив в UTF-8


    Нужно написать простую функцию которая на выходе выведет тотже массив только с UTF-8 помогите или подскажите решение
     
  2. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    судя по всему это двумерный массив
    PHP:
    1.  
    2. foreach($array as $k=>$v)
    3.      foreach($v as $s=>$t)
    4.           $out[$k][$s] = iconv('from', 'UTF-8', $t);
    5.  
     
  3. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    PHP:
    1. <?php
    2. function deepIconv($from, $to, $sbj){
    3.                 if (is_array($sbj) || is_object($sbj)){
    4.                         foreach ($sbj as &$val){
    5.                                 $val= deepIconv($from, $to, $val);
    6.                         }
    7.                         return $sbj;
    8.                 }else{
    9.                         return iconv($from, $to, $sbj);
    10.                 }
    11.         }
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    PHP:
    1.  
    2. <?php
    3.  
    4. // мапит кодировку как у простой строки, так и у массива любой размерности
    5. function myMap($x)
    6. {
    7.     return is_array($x)
    8.         ? array_map('myMap', $x)
    9.         : (is_string($x)
    10.             ? iconv('cp1251', 'utf-8', $x)
    11.             : $x);
    12. }
    13.  
    14. $arr = myMap($arr);
    15.  
    не отлаживал, возможно не работает ))))
     
  5. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    вот жешь письками мереться пошли. по условиям задачи и моя рабочая
     
  6. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Я обошелся

    PHP:
    1.     foreach ($el as $ekey => $eval):
    2.         foreach ($eval as $bval => $bkey):
    3.         $val_list[$bval] = mb_convert_encoding($bkey, 'UTF-8', 'cp1251');
    4.         endforeach;
    5.         $new_arr[] = $val_list;
    6.     endforeach;
    7.         return $new_arr;
    но это вроде жесткое решение)
     
  7. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    а моя не короче?
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    MaXyC_Web_Studio, нет. попробуй расставить фигурные скобки как рекомендуют, оформи в функцию, добавь тестовый пример и получишь то же количество строк.
    НО, у тебя четко двумерный массив, а у меня произвольная структура

    удачи!

    edit: ... или ты про invision ? у вас одна ****ня :D :D :D
     
  9. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    я по своему пишу. ниибет

    это плюс, но в ТЗ не было делать произвольную структуру

    :-D про него )
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    завтра ему понадобится три уровня, будет новая тема и новые решения? )))