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

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

CASSIO FERRAZ
cassio88

(usa Ubuntu)

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

comigo funcionou:

$link = mysql_connect("localhost", "***", "***");
$db_selected=mysql_select_db("cassio", $link);
$query = 'SELECT * FROM tbl_filmes WHERE id = 8';
$guest = mysql_query($query, $link);
//die($query);
$result = mysql_fetch_array($guest, MYSQL_NUM);
$pal = substr($result[0],0,4);
echo $pal; // imprime "Ação";
# Contar quantas letras tem em uma variável
$x=strlen("$pal");
echo $x; // retorna 4
echo '<br>';
# Faz a repetição com a troca das letras por imagens que representa a letra
for ($t=0;$t<$x;$t++){echo '<img src="algebra/'.$pal[$t].'.jpg" width="40" height="40"><br>';}

Apareceram as 4 imagens

se aparecer no código fonte o img correto mas não aparecerem as imagens, é problema de permissão de acesso, é só dar chmod


  


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

Carpegieri Torezani
gieri

(usa Linux Mint)

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


Pessoal acredito que seja um problema do próprio PHP, olhe esse exemplo com wordwrap da o mesmo erro onde era para aparecer o caractere "ã" aparece a duas ?.

$palavra = "paixão";
$array = wordwrap($palavra, 1, "-", 1);
print_r ($array);


Alguém sabe como corrigir isso?
Pois já tentei com varias funções diferentes e o erro persiste.


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

Carpegieri Torezani
gieri

(usa Linux Mint)

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

cassio88 escreveu:

comigo funcionou:

$link = mysql_connect("localhost", "***", "***");
$db_selected=mysql_select_db("cassio", $link);
$query = 'SELECT * FROM tbl_filmes WHERE id = 8';
$guest = mysql_query($query, $link);
//die($query);
$result = mysql_fetch_array($guest, MYSQL_NUM);
$pal = substr($result[0],0,4);
echo $pal; // imprime "Ação";
# Contar quantas letras tem em uma variável
$x=strlen("$pal");
echo $x; // retorna 4
echo '<br>';
# Faz a repetição com a troca das letras por imagens que representa a letra
for ($t=0;$t<$x;$t++){echo '<img src="algebra/'.$pal[$t].'.jpg" width="40" height="40"><br>';}

Apareceram as 4 imagens

se aparecer no código fonte o img correto mas não aparecerem as imagens, é problema de permissão de acesso, é só dar chmod



Cassio obrigado novamente pela respostas.

Segue meu cenário, as palavras são carregadas de um aquivo txt, onde são armazenadas em um array.
Após esse procedimento trabalho com cada palavra, as palavras que não tem acento ou "ç" funcionam corretamente. As palavras que tem acento ou "ç" são exibidas corretamente e na hora de exibir o acento ou "ç" aparece dois caracteres de ?.

Veja os exemplos que postei de código com variáveis que tenha palavras com acentos, você verá os erros.


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

CASSIO FERRAZ
cassio88

(usa Ubuntu)

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

respondendo ao 14:
$palavra = utf8_decode("paixão");
$array = wordwrap($palavra, 1, "-", 1);
print_r ($array);

o PHP roda OK, mas acertar o collation entre latin1 e UTF às vezes consome 90% do tempo...

ou então meu php.ini está configurado diferente do seu, o que roda normal no meu computador, executa diferente no seu micro...



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

Carpegieri Torezani
gieri

(usa Linux Mint)

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

cassio88 escreveu:

respondendo ao 14:
$palavra = utf8_decode("paixão");
$array = wordwrap($palavra, 1, "-", 1);
print_r ($array);

o PHP roda OK, mas acertar o collation entre latin1 e UTF às vezes consome 90% do tempo...

ou então meu php.ini está configurado diferente do seu, o que roda normal no meu computador, executa diferente no seu micro...


Cassio no meu continua dando erro.
Segue algumas informações:
PHP 5.5.9-1ubuntu4.9 (cli) (built: Apr 17 2015 11:44:57)

php.ini
default_charset = "UTF-8"
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8




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

Carpegieri Torezani
gieri

(usa Linux Mint)

Enviado em 02/07/2015 - 11:00h


Pessoal Obrigado.
Consegui resolver, acredito que não da melhor maneira, caso alguem saiba de uma maneira melhor avise abaixo.
Segue a solução:

Adicionei a linha
header('Content-Type: text/html; charset=iso-8859-1');

Usei o iconv para adequar a formatação
$palavra = iconv('UTF-8', 'ISO-8859-1', "paixão");
$array = wordwrap($palavra, 1, "-", 1);
print_r ($array);


Lembrando que tem que utiliza as duas linhas, se não o mesmo não funciona.


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

Buckminster
Buckminster

(usa Debian)

Enviado em 02/07/2015 - 11:37h

$var="AaBbCcÇçEeÃã";
echo $var;
for( $i=0; $i < 12 ; $i++ ){
print mb_strlen($var)[$i];
}

ou

$var="AaBbCcÇçEeÃã";
echo $var;
for( $i=0; $i < 12 ; $i++ ){
print strlen($var)[$i];
}

Como tu usa utf-8 aconselho a usar mb_strlen, pois assim o PHP mede corretamente os caracteres acentuados, pois eles ocupam mais de um byte.


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

Carpegieri Torezani
gieri

(usa Linux Mint)

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

Buckminster escreveu:

$var="AaBbCcÇçEeÃã";
echo $var;
for( $i=0; $i < 12 ; $i++ ){
print mb_strlen($var)[$i];
}

ou

$var="AaBbCcÇçEeÃã";
echo $var;
for( $i=0; $i < 12 ; $i++ ){
print strlen($var)[$i];
}

Como tu usa utf-8 aconselho a usar mb_strlen, pois assim o PHP mede corretamente os caracteres acentuados, pois eles ocupam mais de um byte.


Buckminster da maneira que você passou da erro. Para a página executar tiver que alterar a posição do parentese, ficando assim:
$var="AaBbCcÇçEeÃã";
echo $var;
for( $i=0; $i < 12 ; $i++ ){
print strlen($var[$i]);
}

No entanto ele escreve tudo de uma única vês, não para cada valor de $i, ele escreve apenas quando $i=0, desta forma não funciona para mim.
Existe alguma outra maneira?

Obrigado pela resposta.


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

Buckminster
Buckminster

(usa Debian)

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

var="AaBbCcÇçEeÃã";
echo $var;
for( $i=0; $i < 12 ; $i++ ){
print strlen($var)[$i];
}

Para eu aqui o código acima dá a saída:

AaBbCcÇçEeÃã


Que é a mesma saída do código que você postou como resolvido:

header('Content-Type: text/html; charset=iso-8859-1');

Usei o iconv para adequar a formatação
$palavra = iconv('UTF-8', 'ISO-8859-1', "AaBbCcÇçEeÃã");
$array = wordwrap($palavra, 1, "-", 1);
print_r ($array);


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

Carpegieri Torezani
gieri

(usa Linux Mint)

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

Buckminster escreveu:

$var="AaBbCcÇçEeÃã";
echo $var;
for( $i=0; $i < 12 ; $i++ ){
print strlen($var)[$i];
}

Para eu aqui o código acima dá a saída:

AaBbCcÇçEeÃã


Que é a mesma saída do código que você postou como resolvido:

header('Content-Type: text/html; charset=iso-8859-1');

Usei o iconv para adequar a formatação
$palavra = iconv('UTF-8', 'ISO-8859-1', "AaBbCcÇçEeÃã");
$array = wordwrap($palavra, 1, "-", 1);
print_r ($array);


Olhe a saída desse mesmo código com apenas uma formatação

$var="AaBbCcÇçEeÃã";
echo $var;
for( $i=0; $i < 12 ; $i++ ){
echo "$i".strlen($var)[$i]."<br>";
}


Você vai ver que a saída é tudo quando $i=0


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

Buckminster
Buckminster

(usa Debian)

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

var="AaBbCcÇçEeÃã";
echo $var;
for( $i=0; $i < 12 ; $i++ ){
echo "$i".strlen($var)[$i]."<br>";
}

A saída do código acima que tu me passou deu o que está abaixo:

AaBbCcÇçEeÃã0
1
2
3
4
5
6
7
8
9
10
11



Veja a saída do código abaixo:

ini_set('default_charset','latin1');
$palavra = "paixão";
$tamPalavra = mb_strlen($palavra);
for ($i = 0; $i < $tamPalavra; ++$i) {
echo 'Caracter ' . $i . ' = ' . utf8_decode($palavra)[$i] . '<br>';
}

Caracter 0 = p
Caracter 1 = a
Caracter 2 = i
Caracter 3 = x
Caracter 4 = ã
Caracter 5 = o

Aqui está tudo como UTF-8.


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

Buckminster
Buckminster

(usa Debian)

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

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>';
}

Caracter 0 = A
Caracter 1 = a
Caracter 2 = B
Caracter 3 = b
Caracter 4 = C
Caracter 5 = c
Caracter 6 = Ç
Caracter 7 = ç
Caracter 8 = E
Caracter 9 = e
Caracter 10 = Ã
Caracter 11 = ã
Caracter 12 = 0
Caracter 13 = ç
Caracter 14 = Ç
Caracter 15 = ç
Caracter 16 = Ç
Caracter 17 = è
Caracter 18 = é
Caracter 19 = ú
Caracter 20 = Ú
Caracter 21 = 0
Caracter 22 = 1
Caracter 23 = 2
Caracter 24 = 3
Caracter 25 = 4
Caracter 26 = 5



01 02 03



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts