doulo4ever Postado Julho 29, 2004 Denunciar Share Postado Julho 29, 2004 Galera, vou precisar da ajuda de vocês aqui...Para ler um arquivo txt, em que estão gravados os dados "nome" e "msg" que estão separados por "###", eu estou usando:while (!feof ($arquivo)) { //LÊ UMA LINHA DO ARQUIVO $linha = fgets($arquivo, 4096); //IMPRIME NA TELA O RESULTADO echo $linha."<br>";}Só que está aparecendo por exemplo:Paulo###MensagemLemão###Mensagem2Preciso usar explode para separar o nome da mensagem! Tentei:while (!feof ($ponteiro)) { //LÊ UMA LINHA DO ARQUIVO $linha = fgets($ponteiro, 4096); //IMPRIME NA TELA O RESULTADO $posts = explode('###,$linha); echo "<b>Nome:</b> ".$result[0]; echo "<b>Msg:</b> ".$result[1];}Porém os dados implesmente não aparecem...O que está errado nesse explode que eu fiz? É assim mesmo que usa?Preciso de uma força!falou t++ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Julho 29, 2004 Denunciar Share Postado Julho 29, 2004 while (!feof ($ponteiro)) { //LÊ UMA LINHA DO ARQUIVO $linha = fgets($ponteiro, 4096); //IMPRIME NA TELA O RESULTADO $posts = explode('###,$linha); echo "<b>Nome:</b> ".$result[0]; echo "<b>Msg:</b> ".$result[1];} Tá faltando uma aspa:while (!feof ($ponteiro)) { //LÊ UMA LINHA DO ARQUIVO $linha = fgets($ponteiro, 4096); //IMPRIME NA TELA O RESULTADO $posts = explode('###', $linha); echo "<b>Nome:</b> ".$result[0]; echo "<b>Msg:</b> ".$result[1];}Até mais! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 taudujas Postado Julho 29, 2004 Denunciar Share Postado Julho 29, 2004 Mudando de assunto, mas sou extremamente leigo nisso:Esse ! antes da função exemplo:while (!feof ($ponteiro)) {Ele serve para que? para dizer que é função dentro do ( é isso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Julho 29, 2004 Denunciar Share Postado Julho 29, 2004 não, ele serve pra negar o resultado da função... uma função que retornaria TRUE se a operação dentro dela fosse verdadeira, com o "!" na frente vai retornar TRUE caso o resultado da operação dentro dela seja falso.beleza? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 taudujas Postado Julho 29, 2004 Denunciar Share Postado Julho 29, 2004 Ah entendi, mas então sempre que utilizar o ! o resultado da função será TRUE? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Julho 29, 2004 Denunciar Share Postado Julho 29, 2004 Não, cara!O resultado da função será TRUE ou FALSE, certo? Então, o quando você coloca:if (condição) { procedimento caso seja TRUE } else { procedimento caso seja FALSE }se você fizer assim:if (!condição) { procedimento caso seja FALSE } else { procedimento caso seja TRUE }É só isso que muda... entendeu? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 taudujas Postado Julho 29, 2004 Denunciar Share Postado Julho 29, 2004 !Ah entendi agora, obrigado Carlos.! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rog Postado Julho 29, 2004 Denunciar Share Postado Julho 29, 2004 $result[0]; ???esquesito não ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Julho 29, 2004 Denunciar Share Postado Julho 29, 2004 $result[0]; ???esquesito não ? Ahhh, acho que entendi o que você quer dizer...É que tá assim: $posts = explode('###', $linha); echo "<b>Nome:</b> ".$result[0];Sendo que o certo, seria assim: $posts = explode('###', $linha); echo "<b>Nome:</b> ".$posts[0];Acho que tinha mais esse problema no código, tb...Valeu, Roger! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rog Postado Julho 29, 2004 Denunciar Share Postado Julho 29, 2004 de nada broeu prefiro o commando file para essa manip$line = file($arquivo);assim de uma vez so o conteudo esta injectado no array $line onde cada index corresponde a uma linha sem precisar abrir a file pointer Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ppgsalomao Postado Julho 30, 2004 Denunciar Share Postado Julho 30, 2004 Eu tb prefiro usar o file() !Acredito que para esse tipo de manipulação ele é mais simples ! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 doulo4ever Postado Julho 30, 2004 Autor Denunciar Share Postado Julho 30, 2004 Valeu galera, agora os dados estão aparecendo normalmente!Porém tem mais uma coisa...quando os dados são gravados, eu estou usando:$conteudo = "$nome###$msg\r\n";O que está em vermelhor quebra a linha para gravar o próximo cadastro, só que quando faço para mostrar os dados, sempre aparece uma linha em branco!Por exemplo:Nome: Paulo Mensagem: Teste Nome: Lemão Mensagem: Teste2 Nome: Mensagem:Como devo fazer neste caso?O que devo fazer no código abaixo:while (!feof ($ponteiro)) { //LÊ UMA LINHA DO ARQUIVO $linha = fgets($ponteiro, 4096); //IMPRIME NA TELA O RESULTADO $posts = explode('###', $linha); echo "<b>Nome:</b> ".$posts[0]; echo "<b>Msg:</b> ".$posts[1];}ValewwwPaulo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 doulo4ever Postado Julho 30, 2004 Autor Denunciar Share Postado Julho 30, 2004 Masi uma coisa...Como eu fãço para trabalhar com file()? Como deveria ficar? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 doulo4ever Postado Julho 30, 2004 Autor Denunciar Share Postado Julho 30, 2004 Vixeeee, deu certo! Consegui usar file(), ele já retira automaticamente a linha em branco, faz tudo certinho, muito mais fácil mesmo!Ficou assim:$arquivo = file($arquivotxt);foreach ($arquivo as $comentario) { //LÊ UMA LINHA DO ARQUIVO //IMPRIME NA TELA O RESULTADO $posts = explode('###', $comentario); echo "<b>Nome:</b> ".$posts[0]; echo "<b>Msg:</b> ".$posts[1]; echo "<br>";}Tá certo né? Pelo menos aqui funcionou!Muito loco mexer com txt, não vai acupar nem 10% do espaço que ía ocupar se eu fosse fazer com banco de dados! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
doulo4ever
Galera, vou precisar da ajuda de vocês aqui...
Para ler um arquivo txt, em que estão gravados os dados "nome" e "msg" que estão separados por "###", eu estou usando:
Só que está aparecendo por exemplo:
Paulo###Mensagem
Lemão###Mensagem2
Preciso usar explode para separar o nome da mensagem! Tentei:
Porém os dados implesmente não aparecem...
O que está errado nesse explode que eu fiz? É assim mesmo que usa?
Preciso de uma força!
falou t++
Link para o comentário
Compartilhar em outros sites
13 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.