inforsis 1 Denunciar post Postado Março 11, 2008 Boa Noite pessoal! Então estou com uma dúvida/problema. Tenho uma string, a principio vou trata-la como sendo simples: Ex: "1717182017171617,0300.00,02012008,00001234,Lockbox Deposit"; Preciso converter a primeira parte dessa string 1717182017171617 em 11241101 essa convers"ao seguindo uma tabela. Fiz da seguinte maneira: <?php $transacao = "1717182017171617,0300.00,02012008,00001234,Lockbox Deposit"; addslashes($transacao); $tran = str_split ($transacao); $tran = explode (",",$transacao); $campo1 = str_split ($tran[0],2); for ($i=0;$i<=count($campo1);$i++) { switch ($campo1[$i]) { case 16: $campo1[$i] = 0; break; case 17: $campo1[$i] = 1; break; case 18: $campo1[$i] = 2; break; case 19: $campo1[$i] = 3; break; case 20: $campo1[$i] = 4; break; case 21: $campo1[$i] = 5; break; case 22: $campo1[$i] = 6; break; case 23: $campo1[$i] = 7; break; case 24: $campo1[$i] = 8; break; case 25: $campo1[$i] = 9; break; } } echo "\"$campo1[0]"."$campo1[1]"."$campo1[2]"."$campo1[3]"."$campo1[4]"."$campo1[5]"."$campo1[6]"."$campo1[7]"."$campo1[8]"."$campo1[9]\"".","."$tran[1]".",\""."$tran[2]\"".",\""."$tran[3]\"".",\""."$tran[4]\""; ?>Consegui o resultado pretendido, porém essa string vêm de um arquivo txt. Essa parte que estou com problema, pois consigo visualizar as strings que vêm do arquivo porém não consigo fazer a conversão. Estou tentando dessa maneira: <?php $txt = file_get_contents("codigo.txt"); $trans = str_split ($txt); $trans = explode (";",$txt); for ($i=0;$i<=count($trans);$i++) { $transacao = str_split ($trans[$i]); $transacao = explode (",",$trans[$i]); $campo = str_split ($trans[$i][0],2); for ($j=0;$j<=count($campo[$j]);$j++) { switch ($campo[$j]) { case 16: $campo[$j] = 0; break; case 17: $campo[$j] = 1; break; case 18: $campo[$j] = 2; break; case 19: $campo[$j] = 3; break; case 20: $campo[$j] = 4; break; case 21: $campo[$j] = 5; break; case 22: $campo[$j] = 6; break; case 23: $campo[$j] = 7; break; case 24: $campo[$j] = 8; break; case 25: $campo[$j] = 9; break; } } for ($z=0;$z<=count($campo[$z]);$z++) { echo "$campo[$z]<br />"; } } ?>Porém apenas esta me retornando "1" pelo que entendi ele nao esta rodando o laço para exibir todos os outros caracteres da string.Alguém pode me ajudar? Caso nao tenha sido claro, só perguntar, que tento me expressar melhor. Até Mais. Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
batatinha66 0 Denunciar post Postado Março 12, 2008 dei uma adaptadazinha nu script... nao testei pq meu php eh 4.3 n tem a funcao str_split... mais qlk coisa so fala ae =] <?php $txt = "1717182017171617,0300.00,02012008,00001234,Lockbox Deposit;"; $variavel = explode(","); $n = str_split($variavel[0], 2); foreach($n as $y){ switch ($y) { case 16: array_push($x, 0); break; case 17: array_push($x, 1); break; case 18: array_push($x, 2); break; case 19: array_push($x, 3); break; case 20: array_push($x, 4); break; case 21: array_push($x, 5); break; case 22: array_push($x, 6); break; case 23: array_push($x, 7); break; case 24: array_push($x, 8); break; case 25: array_push($x, 9); break; }} foreach ($x as $campo) { echo "$campo"; } ?> PS: Odeio usar lacos =P flwsss Compartilhar este post Link para o post Compartilhar em outros sites
inforsis 1 Denunciar post Postado Março 12, 2008 opâ batatinha66, Bom Dia! Obrigado pela adaptada que você deu no script, deu uma automatizada legal... Porém meu problema esta na segunda parte do script, onde tenho que resgatar os registros que estão em um arquivo txt, essa parte que não estou conseguindo retornar os valores... PS: Testando o script que você postou, não foi me retornado nenhuma saída, desculpa por não ter tempo no momento para observar algum ponto que esteja errado por eventualidade. Mais uma vez Obrigado. Se alguém poder me ajudar na segunda parte, fico grato. Até Mais. Compartilhar este post Link para o post Compartilhar em outros sites
inforsis 1 Denunciar post Postado Março 12, 2008 Salve Salve! Com a ajuda do jeronymo, conseguimos chegar ao resultado pretendido inicialmente vou postar abaixo: <?php $txt = file_get_contents("codigo.txt"); $trans = explode (";",$txt); for ($i=0;$i<=count($trans);$i++) { $transacao = explode (",",$trans[$i]); $campo = str_split ($transacao[0],2); for ($j=0;$j<=count($campo);$j++) { switch ($campo[$j]) { case 16: $campo[$j] = 0; break; case 17: $campo[$j] = 1; break; case 18: $campo[$j] = 2; break; case 19: $campo[$j] = 3; break; case 20: $campo[$j] = 4; break; case 21: $campo[$j] = 5; break; case 22: $campo[$j] = 6; break; case 23: $campo[$j] = 7; break; case 24: $campo[$j] = 8; break; case 25: $campo[$j] = 9; break; } echo "$campo[$j]"; } echo " $transacao[1] $transacao[2] $transacao[3] $transacao[4] <br />"; } ?> Isso me dá o resultado inicial mais agora vêm o problema os registros no arquivo txt estão da seguinte maneira: "1717182017171617",0300.00,"02012008","00001234","Lockbox Deposit" Contém aspas, para obter a saida que encontrei acima, tenho que dar um jeito de ignorar essas aspas, pois não posso simplesmente escapalas usando \ (barra invertida) pois estão em um arquivo texto e são muitos registros... Alguém tem alguma idéia? Pensei na função: addslashes, porém não estou conseguindo obeter exito... Até Mais. Compartilhar este post Link para o post Compartilhar em outros sites
batatinha66 0 Denunciar post Postado Março 12, 2008 tenta usar o str_replace =] ai você remove as aspas d vez =P acho k eh uma boa solucao qlk coisa soh fala!!! Compartilhar este post Link para o post Compartilhar em outros sites
inforsis 1 Denunciar post Postado Março 12, 2008 opa batatinha66, Boa Tarde! Mais uma vez obrigado pela atenção e pela dica... Dei uma pesquisada nessa função que me indicou, porém achei mais facil para trabalhar com a substr, veja como ficou: <?php $txt = file_get_contents("codigo.txt"); $trans = explode (";",$txt); for ($i=0;$i<=count($trans);$i++) { $transacao = explode (",",$trans[$i]); $string = substr("$transacao[0]", 1, 16); $campo = str_split ($string,2); for ($j=0;$j<=count($campo);$j++) { switch ($campo[$j]) { case 16: $campo[$j] = 0; break; case 17: $campo[$j] = 1; break; case 18: $campo[$j] = 2; break; case 19: $campo[$j] = 3; break; case 20: $campo[$j] = 4; break; case 21: $campo[$j] = 5; break; case 22: $campo[$j] = 6; break; case 23: $campo[$j] = 7; break; case 24: $campo[$j] = 8; break; case 25: $campo[$j] = 9; break; } echo $campo[$j]; } echo " $transacao[1] $transacao[2] $transacao[3] $transacao[4]<br />"; } ?> Acho que assim meu "problema" fica resolvido, existe um detalhe com a inserção das virgulas novamente, mais meu patrão dissi para não me preucupar com isso agora. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Obrigado pela atenção de todos, até mais. Compartilhar este post Link para o post Compartilhar em outros sites