Pedro Schneider

Um pouco sobre minha vida, trabalhos, estudos, diversões entre outros!

Descobrindo a codificação de uma string

Depois de muito dar socos na mesa e pesqusiar no meu amigo Google, chegou a hora do triste veredicto: caí em uma built-in function (funções que já vêm na linguagem). Nossa função se chama mb_detect_encoding() e, infelizmente, não irá funcionar a contento se não tiver um dedinho brasileiro ali.
A função só terá um resultado satisfatório se forem observados dos detalhes:

1. O segundo parâmetro da função (encoding list) deverá ser rigorosamente passado, contendo os dois encodes possíveis, a saber: UTF-8 e ISO-8859-1.
2. O último caractere da string não pode ser acentuado, para tanto utilizaremos um “método alternativo de eficácia momentânea” (vide Wikipédia: Gambiarra).

Mas e então, como fica? Vamos meter a mão na massa!

Vamos montar uma funçãozinha bacana e bem simples, chamada codificacao() que irá retornar o charset de uma dada string. Talvez você perceba algo bizarro neste snippet, mas eu explico logo abaixo:

function codificacao( $string ) {
return mb_detect_encoding( $string . 'x', 'UTF-8, ISO-8859-1' );
}

Agora você me pergunta: O que raios aquele “x” está fazendo ali?
A resposta é muito simples. Lembra que eu comentei que a string não pode terminar em caractere acentuado? (Hahahahahahahahahaha!)
Procura no manual do PHP que foi um um francês que sugeriu essa implementação (que mesmo após o PHP corrigir o bug, a função continuará funcionando do mesmo jeito) e eu gostei. :)


Postado por correaschneider em Desenv,Dicas,PHP e tem nenhum comentário

Faça seu comentário