Jump to content
Fórum Script Brasil
  • 0

Lendo Arquivo Txt


doulo4ever
 Share

Question

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###Mensagem

Lemão###Mensagem2

Preciso 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>&nbsp;".$result[0];

  echo "<b>Msg:</b>&nbsp;".$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++

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0
while (!feof ($ponteiro)) {

  //LÊ UMA LINHA DO ARQUIVO

  $linha = fgets($ponteiro, 4096);

  //IMPRIME NA TELA O RESULTADO

  $posts = explode('###,$linha);

  echo "<b>Nome:</b>&nbsp;".$result[0];

  echo "<b>Msg:</b>&nbsp;".$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>&nbsp;".$result[0];

  echo "<b>Msg:</b>&nbsp;".$result[1];

}

Até mais!

Link to comment
Share on other sites

  • 0

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?

Link to comment
Share on other sites

  • 0

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?

Link to comment
Share on other sites

  • 0
$result[0]; ???

esquesito não ?

Ahhh, acho que entendi o que você quer dizer...

É que tá assim:

$posts = explode('###', $linha);

echo "<b>Nome:</b>&nbsp;".$result[0];

Sendo que o certo, seria assim:

$posts = explode('###', $linha);

echo "<b>Nome:</b>&nbsp;".$posts[0];

Acho que tinha mais esse problema no código, tb...

Valeu, Roger!

Link to comment
Share on other sites

  • 0

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>&nbsp;".$posts[0];

  echo "<b>Msg:</b>&nbsp;".$posts[1];

}

Valewww

Paulo

Link to comment
Share on other sites

  • 0

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>&nbsp;".$posts[0];

  echo "<b>Msg:</b>&nbsp;".$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!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.8k
    • Total Posts
      648.5k
×
×
  • Create New...