Atualizado em 27 de Maio de 2013

Ler Arquivo Texto PHP

Olá pessoal,

Embora o uso de arquivos texto não seja tão utilizado nos dias de hoje eles ainda tem uma utilidade interessante em alguns projetos.

Imagine a seguinte situação: "você tem um arquivo texto que salva as informações que os usuários digitam em um formulário de contato apenas para não perder estas informações se o usuário sair e voltar nesta página", para poder preencher este formulário automaticamente você vai precisar ler o arquivo texto que você criou com o PHP.

Vamos ver então como ler as informações do arquivo texto. Veja o exemplo abaixo:

Imagem do Arquivo Texto
(Imagem do arquivo texto do exemplo)

1 <?php
2  // Abre o Arquvio no Modo r (para leitura)
3  $arquivo = fopen ('arquivo-texto.txt', 'r');
4
5  // Lê o conteúdo do arquivo
6  while(!feof($arquivo))
7  {
8   //Mostra uma linha do arquivo
9   $linha = fgets($arquivo, 1024);
10   echo $linha.'<br />';
11  }
12
13  // Fecha arquivo aberto
14  fclose($arquivo);
15 ?>

Explicando o código:
  • Comando fopen: Abre o arquivo indicado;
  • Comando feof: Indica ao comando while quando chegou ao final do arquivo;
  • Comando fgets: Lê a linha atual do arquivo texto;
  • Comando fclose: Fecha a conexão aberto do arquivo texto.

Na linha 3 tem um parâmetro que mostra da forma como o arquivo deve ser aberto, em nosso caso usamos o r, que serve para abrir o arquivo no modo leitura, abaixo uma tabela de todos os modos existentes:
  • r: Somente leitura, colocando o ponteiro no começo do arquivo;
  • r+: Leitura e escrita, colocando o ponteiro no começo do arquivo;
  • w: Somente para escrita, colocando o ponteiro no começo do arquivo resetando o mesmo, criando o arquivo caso ele não exista;
  • w+: Leitura e escrita, colocando o ponteiro no começo do arquivo resentando o mesmo, criando o arquivo caso ele não exista;
  • a: Somente para escrita, colocando o ponteiro do arquivo no final deste, criando o arquivo caso o ele não exista;
  • a+: Leitura e escrita, colocando o ponteiro do arquivo no final deste, criando o arquivo caso o mesmo não exista;
  • x: Cria e abre o arquivo somente para escrita e coloca o ponteiro no começo do arquivo, gerando uma falha caso o arquivo já exista;
  • x+: Cria e abre o arquivo para leitura e escrita e coloca o ponteiro no começo do arquivo, gerando uma falha caso o arquivo já exista.

O resultado no navegador fica como a imagem abaixo:

Imagem do resultado da leitura do arquivo texto


Não deixem de enviar seus comentários e suas sugestões para novos posts afinal o blog e de vocês.


E isso aí pessoal, até a próxima.

Tags:  Comandos PHP | PHP

Comentários

Sua foto do perfil

Leanderson

Mauricio, gostaria de ler um arquivo .txt contendo esses campos : {11//
Id={B3C7EB77-B915-45DC-AB8A-DA12FDDBC678}
Name=ADUSERS. Gostaria de ler e gravar no meu banco, o que tivesse do " = " para frente. Como faço isso?

07 de Fevereiro de 2015 - 09:53

Sua foto do perfil

Mauricio Programador

Olá Leanderson,

Minha sugestão e que você padronize o arquivo de outra forma, pois se tiver que fazer isso com todos estas dados como ID, NAME, você terá que ter um carácter que marque o inicio no seu caso o = e um que marque o final para o scritp saber ate onde copiar.

E para pegar a substring com o texto que você quer basta usar strpos e substr.

Abraço.

09 de Fevereiro de 2015 - 09:50

Sua foto do perfil

grace

Mauricio, qual o programinha que usamos para abrir arquivos php?????Eu lembro que eu usava um arquivinho mas eu tive uma lyme disease and fiquei dez dias em coma e esqueci muita coisa, popis minha memoria foi afetada...obrigada

27 de Dezembro de 2014 - 09:15

Sua foto do perfil

Mauricio Programador

Olá Grace,

De uma olhada nesta vídeo-aula que envio o link abaixo, ela mostra como montar todo o ambiente de programação.

Instalando Ambiente de Programação para PHP.

Abraço e boa recuperação.

29 de Dezembro de 2014 - 09:32

Sua foto do perfil

rikardo

Olá Mauricio, não estou conseguindo fazer leitura de arquivo txt, onde faz a busca de um arquivo txt qualquer atraves do input e abri-lo em um campo textarea.
Não faço nenhuma ideia pra isso funcionar
Pode me ajudar?

21 de Setembro de 2014 - 00:07

Sua foto do perfil

Mauricio Programador

Olá Rikardo,

Para pode selecionar um arquivo de txt qualquer você terá que colocar um campo file em seu formulário.

Já para aparecer o valor dentro de um Textarea, você terá que carregar o valor dentro de uma variável e depois colocar esta variável para ser escrita dentro das tags do textarea.

Espero ter ajudado.

Qualquer coisa posta ai, abraço.

22 de Setembro de 2014 - 08:55

Sua foto do perfil

Tiago Alves

Oi, Mauricio mto bom seu conteúdo do site parabéns,

Se puder me ajudar agradeço,
preciso ler um arquivo txt, e imprimir a linha com a sigla da busca, exemplo:

NO TXT TENHO
AC-ACRE;1;Eletronica super Tv;70400-250
AL-ALAGOAS;2;IUTEC Eletro Eletronica Ltda;60900-280
AP-AMAPÁ;3;IUTEC Eletro Eletronica Ltda;60900-280

A busca será pelas siglas
Então qdo for igual a AL preciso imprimir ou trabalhar somente com a segunda linha, é só uma pesquisa, mas não consigo fzr parar no final da linha.

Eu tinha feito igualzinho o seu comando da manipular o arquivo.

Abraço vlw.

25 de Agosto de 2014 - 15:06

Sua foto do perfil

Mauricio Programador

Olá Tiago,

Obrigado por suas palavras.

Se a sigla sempre for os dois primeiros caracteres fica fácil, você pode fazer assim:

if(substr($linha, 0, 2) == $busca){
echo $linha.'< br />';
}

Teste ai qualquer coisa me avisa.

Abraço.

26 de Agosto de 2014 - 09:44

Sua foto do perfil

Leonardo Barros

Olá Mauricio

Estou tentando ler um arquivo para incluir em um banco de dados mas o arquivo txt está em duas linhas o campos para cada registro. Conforme exemplo abaixo, gostaria de uma ideia de como fazer a leitura do arquivo.
xxw R1 JOSÉ PAES DA GOMES 0723507 ()

R$ 29,06
Jel R1 JOSÉ RODRIGUES SOARES 1195613 ()

R$ 11,84
Rel RF JULIO DE OLIVEIRA BASTOS 0310243 ()

R$ 14,81

09 de Julho de 2014 - 09:39

Sua foto do perfil

Mauricio Programador

Olá Leonardo,

Bom a primeira ideia seria mudar este arquivo txt, se ele esta vindo de algum programa ou algo assim, pedir para os seus administradores enviarem o mesmo de forma padronizada.

Caso esta não seja uma opção viável, você terá que fazer certos caminhos menos indicados em termos de custo para a programação. Você pode fazer assim:

 <?php
 $i = 1;
 $x = 0;
 $dados['linhas'] = array();

 $arquivo = fopen ('arquivo-texto.txt', 'r');

 while(!feof($arquivo))
 {
  $linha = fgets($arquivo, 1024);

  $dados['linhas'][$x][$i] = $linha;

  if($i == 2){
   $i = 1;
   $x++;
  }else{
   $i++;
  }
 }

 fclose($arquivo);
 ?>

Porem o arquivo teria que estar assim:

R$ 29,06
Jel R1 JOSÉ RODRIGUES SOARES 1195613 ()
R$ 29,06
Jel R1 JOSÉ RODRIGUES SOARES 1195613 ()

E o resultado será um array.

Abraço.

09 de Julho de 2014 - 12:16

Sua foto do perfil

Leonardo Barros

Olá Mauricio
Obrigado pela resposta, mas tem algumas coisas que eu não expliquei direito.
Não tem como melhorar o arquivo o formato é esse mesmo e não tem como mudar é um relatória que é recebido em pdf.
Vou explicar mais detalhadamente: Na primeira linha somente os (7)sete números são necessários, na segunda linha somente o valor sem R$. Então são dois campos de um registro. Gostaria de colocar em um array de duas posições.
Será que vc pode me ajudar?
Um abraço Leonardo Barros

10 de Julho de 2014 - 12:44

Sua foto do perfil

Mauricio Programador

Olá Leonardo,

Para fazer isso basta usar o comando substr para pegar a substring.

Mais o processo e mesmo, basta dar uma aprimorada no algoritmo.

Abraço.

10 de Julho de 2014 - 12:45

Sua foto do perfil

Bruno Surdi

Bom dia

Eu lendo o arquivo, teria como eu procurar certa palavra via php dentro desse arquivo que acabei de ler?

Obrigado

21 de Novembro de 2013 - 09:53

Sua foto do perfil

Mauricio Programador

Olá Bruno,

tem sim! você pode usar o comando strpos ele vai indicar a posição que a mesma esta, caso não exista ele não mostra nada.

Daí assim você pode fazer uma verificação se ela existe.

if(strpos($linha, $palavra_buscar) != '')

Espero que ajude.

Abraço.

21 de Novembro de 2013 - 10:10

Sua foto do perfil

Bruno Surdi

Bom dia.
Achei a solução da minha pergunta
Eu estava querendo achar uma palavra no httpd.conf do apache.
na variável $palavraExiste eu utilizo ela para criar um novo virtualhost caso ele não exista.


$caminho = '/etc/httpd/conf/';
$caminhoArquivo = $caminho . 'httpd.conf';
//abre o arquivo httpd.conf com foco na ultima linha
$arquivo = fopen($caminhoArquivo, 'a+');
$conteudo = fread($arquivo, filesize($caminhoArquivo));
$linha = explode(" ", $conteudo);
for ($i = 0; $i <= sizeof($linha); $i++) {
//SEPARANDO OS DADOS POR; (PONTO E VIRGULA)
$parte = explode(";", $linha[$i]);
//NOME DO USUÁRIO
$parte_user = trim($parte[0]);
//VERIFICA SE O USUÁRIO DIGITADO EXISTE
if (($serverName == $parte_user)) {
$palavraExiste = true;
}
}
?>

22 de Novembro de 2013 - 09:36

Sua foto do perfil

Bruno Loits

Muito obrigado mauricio, me ajudou!

24 de Outubro de 2013 - 16:17

NEWSLETTER

Receba dicas de programação
em seu e-mail

TWITTER

Acompanhe tudo o que rola
com Mauricio Programador

NEWSLETTER