PHP - Erro separação de caracteres de uma variável

25. Re: PHP - Erro separação de caracteres de uma variável

Carpegieri Torezani
gieri

(usa Linux Mint)

Enviado em 02/07/2015 - 14:10h

Buckminster escreveu:

ini_set('default_charset','latin1');
$palavra = "AaBbCcÇçEeÃã0çÇçÇèéúÚ012345";
$tamPalavra = mb_strlen($palavra);
for ($i = 0; $i < $tamPalavra; ++$i) {
echo 'Caracter ' . $i . ' = ' . utf8_decode($palavra)[$i] . '<br/>';
}



Tentei seu código dentro do meu e retornou um erro, aparece o ícone de ?.
Após diversos testes inclusive criando um arquivo novo o código funcionou.

Testei com pedaços do meu código e encontrei quando o erro acontece. Segue o código, só que é fora do PHP é uma parte da página que é em HTML.

<img border="0" ALIGN=center width="50" height="50" src="arquivos/erro/v.gif" onclick="document.getElementById('pop_erro').style.display='none';document.getElementById('pop_bloqueio2').style.display='none';" style="cursor:pointer;";></img>
<img border="0" ALIGN=center width="50" height="50" src="arquivos/erro/o.gif" onclick="document.getElementById('pop_erro').style.display='none';document.getElementById('pop_bloqueio2').style.display='none';" style="cursor:pointer;";></img>
<img border="0" ALIGN=center width="50" height="50" src="arquivos/erro/c.gif" onclick="document.getElementById('pop_erro').style.display='none';document.getElementById('pop_bloqueio2').style.display='none';" style="cursor:pointer;";></img>
<img border="0" ALIGN=center width="50" height="50" src="arquivos/erro/e.gif" onclick="document.getElementById('pop_erro').style.display='none';document.getElementById('pop_bloqueio2').style.display='none';" style="cursor:pointer;";></img>

<img border="0" ALIGN=center width="50" height="50" src="arquivos/erro/e.gif" onclick="document.getElementById('pop_erro').style.display='none';document.getElementById('pop_bloqueio2').style.display='none';" style="cursor:pointer;";></img>
<img border="0" ALIGN=center width="50" height="50" src="arquivos/erro/r.gif" onclick="document.getElementById('pop_erro').style.display='none';document.getElementById('pop_bloqueio2').style.display='none';" style="cursor:pointer;";></img>
<img border="0" ALIGN=center width="50" height="50" src="arquivos/erro/r.gif" onclick="document.getElementById('pop_erro').style.display='none';document.getElementById('pop_bloqueio2').style.display='none';" style="cursor:pointer;";></img>
<img border="0" ALIGN=center width="50" height="50" src="arquivos/erro/o.gif" onclick="document.getElementById('pop_erro').style.display='none';document.getElementById('pop_bloqueio2').style.display='none';" style="cursor:pointer;";></img>
<img border="0" ALIGN=center width="50" height="50" src="arquivos/erro/u.gif" onclick="document.getElementById('pop_erro').style.display='none';document.getElementById('pop_bloqueio2').style.display='none';" style="cursor:pointer;";></img>


Quando eu diminuo o código para a metade desse que está acima volta a funcionar.


  


26. Re: PHP - Erro separação de caracteres de uma variável

Buckminster
Buckminster

(usa Debian)

Enviado em 02/07/2015 - 14:18h

Essa linha no teu HTML

<meta charset="utf-8">

está definida como?



27. Re: PHP - Erro separação de caracteres de uma variável

Carpegieri Torezani
gieri

(usa Linux Mint)

Enviado em 02/07/2015 - 14:42h

Buckminster escreveu:

Essa linha no teu HTML

<meta charset="utf-8">

está definida como?


Está sim...
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />




28. Re: PHP - Erro separação de caracteres de uma variável

Buckminster
Buckminster

(usa Debian)

Enviado em 02/07/2015 - 14:58h


Eu testei aqui o código

ini_set('default_charset','latin1');
$palavra = "AaBbCcÇçEeÃã0çÇçÇèéúÚ012345";
$tamPalavra = mb_strlen($palavra);
for ($i = 0; $i < $tamPalavra; ++$i) {
echo 'Caracter ' . $i . ' = ' . utf8_decode($palavra)[$i] . '<br/>';
}

dentro de um arquivo HTML e saiu tudo certo com as letras da variável palavra, porém as palavras da página html ficaram com a encodificação de caracteres estranhos (?,[], etc).
Mas esse comportamento é normal uma vez que ini_set define o charset da página, sendo que no php.ini o charset está como utf-8 e o arquivo está como utf-8 sem BOM.

Você tem as seguintes opções: colocar TUDO como latin1 ou se tu não tem mais nada escrito na página não há porque se preocupar.

E eu não entendi o que tu quis dizer com "diminuir o código pela metade".


29. Re: PHP - Erro separação de caracteres de uma variável

Carpegieri Torezani
gieri

(usa Linux Mint)

Enviado em 02/07/2015 - 15:12h

Buckminster escreveu:


Eu testei aqui o código

ini_set('default_charset','latin1');
$palavra = "AaBbCcÇçEeÃã0çÇçÇèéúÚ012345";
$tamPalavra = mb_strlen($palavra);
for ($i = 0; $i < $tamPalavra; ++$i) {
echo 'Caracter ' . $i . ' = ' . utf8_decode($palavra)[$i] . '<br/>';
}

dentro de um arquivo HTML e saiu tudo certo com as letras da variável palavra, porém as palavras da página html ficaram com a encodificação de caracteres estranhos (?,[], etc).
Mas esse comportamento é normal uma vez que ini_set define o charset da página, sendo que no php.ini o charset está como utf-8 e o arquivo está como utf-8 sem BOM.

Você tem as seguintes opções: colocar TUDO como latin1 ou se tu não tem mais nada escrito na página não há porque se preocupar.

E eu não entendi o que tu quis dizer com "diminuir o código pela metade".



Sim colocar apenas metade desse código postado acima funciona, quando coloco tudo da erro. Exibe os caracteres de ? e outros.

Mas o principal foi solucionado de novo.

Obrigado pela ajuda.

Agora irei refinar o código e ver o que posso melhorar para não ter essa situação novamente.


30. Re: PHP - Erro separação de caracteres de uma variável

Buckminster
Buckminster

(usa Debian)

Enviado em 02/07/2015 - 15:13h

De nada.




01 02 03



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts