Convertendo array para UTF8 em PHP



Ultimamente tenho usado muito Ajax e com isso comecei a usar JSON para um melhor desempenho no tráfego dos projetos. Mas tive um problema com dados que estão em ISO-8859-1 pois o JSON só funciona com dados em UTF8. Mas para isso temos o utf8_encode() e o utf8_decode(), no PHP, que servem para codificar e decodificar, respectivamente, uma string em utf8. Até aí é uma maravilha. Mas o utf8_enconde não codifica um vetor inteiro. Se você tem uma tabela de dados inteira pra codificar em utf8, o que fazer? Vamos ver uma solução que bolei baseada em algumas pesquisas.

CONVERTENDO ARRAYS EM PHP
Pesquisando na Internet, mais precisamente no site oficial do PHP, php.net, encontrei uma pequena função para converter os arrays, só que não apresentou uma boa eficiência, causando muitas vezes um Warning. Então verificando melhor cheguei à conclusão a seguir que funcionou muito bem e com ótimo desempenho:

public static function arrayUtf8Enconde(array $array) {

//instancia um novo array
$novo = array();

//entar em um loop para verificar e converter cada indice do array
foreach ($array as $i => $value) {

//verifica se o indice é um array
if (is_array($value)) {

//aqui chama novamente o próprio método para verificar novamente(recursividade)
  $value = arrayUtf8Enconde($value);

} elseif (!mb_check_encoding($value, 'UTF-8')) {//se não for array, verifica se o valor está codificado como UTF-8
//aqui ele codifica
$value = utf8_encode($value);
}

//recoloca o valor no array
$novo[$i] = $value;
}

//retorna o array
return $novo;
}

Como podem ver, este é um método recursivo. O método mb_check_enconding() verifica se a string está codificada de acordo com o padrão informado no parâmetro, se não, ele codifica usando utf8_encode().

É isso aí, qualquer dúvida é só postar no comentário. Seu comentário é importante! Então até a próxima e fique na paz!

Comentários

  1. Muito bom o artigo. Vai ajudar a galera com certeza.
    Abraços

    www.iconnectcursos.com.br

    ResponderExcluir
    Respostas
    1. Obrigado. Espero que ajude sim.

      Vi e achei seu site legal.

      Abraço.

      Excluir
  2. Cara Obrigado, sei que é meio "velho" o post, mais me salvou hoje. Obrigado mesmo!

    ResponderExcluir
    Respostas
    1. Que bom que te ajudou. Enquanto a galera do PHP não adicionar uma função para converter arrays, vamos nos virar com essa, rsrsrsr

      Abraço

      Excluir

Postar um comentário

Postagens mais visitadas deste blog

JDownloader: Corrigir erro Skipped FFMpeg ao baixar do Youtube

Corrigindo erro ao instalar o Netbeans no Linux: UncaughtExceptionHandler in thread "main"

Inkscape: Fontes não aparecem - Windows 10