• Início
  • Institucional
    • Fale Conosco
    • Nossa Equipe
    • Sobre
  • ShowCasts
  • Speedtest
  • Vagas
  • Categorias
    • Android
    • Dev
    • GNU/Linux
    • Rede
    • Windows
  • Grupos

Manipulação de arquivos do tipo texto com PHP

Postado em 16 de dezembro de 2014 por Rodrigo Maciel

php-elephant

Hoje em dia é praticamente impossível utilizar um sistema sem banco de dados. Podemos encontrarmos sistemas para cálculos ou apenas executar ações específicas que não precisem de banco de dados, mas, mesmo assim, existe a persistência de dados, seja em um array, um arquivo de configuração ou parâmetros em txt, etc. Hoje vamos ver como manipular arquivos “.txt“.

A versão do PHP utilizada nesse post é a 5.5, o servidor pode ser qualquer distribuição linux, mas estou utilizando o Ubuntu Server 14.04.
Primeiro vamos aprender como abrir e fechar um arquivo.

<?php
$arquivo = '/tmp/arquivo.txt';
$fp = fopen($arquivo, 'w');
fclose($fp);

Note que passamos dois parâmetros na função fopen() que é responsável por abrir o arquivo.
O primeiro parâmetro é o local que está o nosso arquivo, o segundo é o modo que ele será aberto. O modo utilizado em nosso exemplo foi o ‘w’, que abre o arquivo para somente escrita.
Abaixo estão os modos existentes para abertura de arquivo.

‘r’ Abre somente para leitura; coloca o ponteiro do arquivo no começo do arquivo.
‘r+’ Abre para leitura e escrita; coloca o ponteiro do arquivo no começo do arquivo.
‘w’ Abre somente para escrita; coloca o ponteiro do arquivo no começo do arquivo e reduz o comprimento do arquivo para zero. Se o arquivo não existir, tenta criá-lo.
‘w+’ Abre para leitura e escrita; coloca o ponteiro do arquivo no começo do arquivo e reduz o comprimento do arquivo para zero. Se o arquivo não existir, tenta criá-lo.
‘a’ Abre somente para escrita; coloca o ponteiro do arquivo no final do arquivo. Se o arquivo não existir, tenta criá-lo.
‘a+’ Abre para leitura e escrita; coloca o ponteiro do arquivo no final do arquivo. Se o arquivo não existir, tenta criá-lo.
‘x’ Cria e abre o arquivo somente para escrita; coloca o ponteiro no começo do arquivo. Se o arquivo já existir, a chamada a fopen() falhará, retornando FALSE e gerando um erro de nível E_WARNING. Se o arquivo não existir, tenta criá-lo.
‘x+’ Cria e abre o arquivo para leitura e escrita; coloca o ponteiro no começo do arquivo. Se o arquivo já existir, a chamada a fopen() falhará, retornando FALSE e gerando um erro de nível E_WARNING. Se o arquivo não existir, tenta criá-lo.

Agora que vimos como abrir o arquivo, vamos fazer uma gravação no arquivo criado acima utilizando a função fwrite().

<?php
$arquivo = '/tmp/arquivo.txt';
$conteudo = 'Teste de gravação\r\n';
$fp = fopen($arquivo, 'a');
fwrite($fp, $conteudo);
fclose($fp);

Colocamos o “\r\n” para que a gravação da última posição do ponteiro seja recuado na linha de baixo. Fácil, não?

E se nós quisermos fazer a leitura do arquivo? Simples como gravar o texto!
Utilizaremos a função fgets(), feof() e uma estrutura em loop para percorrer o arquivo do início ao fim.

<?php
$arquivo = '/tmp/arquivo.txt';
$fp = fopen($arquivo, 'r');
while(!feof($fp)) {
    $linha = fgets($fp, 4096);
    echo $linha;
}
fclose($fp);

O arquivo será aberto com o ponteiro posicionado no início do arquivo e enquanto não for final do arquivo, o script irá ler linha a linha ate o final do arquivo. Note que no segundo parâmetro da função fgets() colocamos 4096, isto quer dizer que o script irá ler até 4096 bytes de dados em cada linha.

Agora vamos deixar o script um pouco mais completo.

Um arquivo que faz a gravação

<?php
$arquivo = '/tmp/arquivo.txt';
$conteudo = 'Teste de gravação\r\n';
if (!file_exists($arquivo)) {
    $fp = fopen($arquivo, 'w');
} else {
    $fp = fopen($arquivo, 'a');
}
fwrite($fp, $conteudo);
fclose($fp);
<?php
$arquivo = '/tmp/arquivo.txt';
if (!file_exists($arquivo)) {
    echo “O arquivo não existe”;
} else {
    $fp = fopen($arquivo, 'a');
    while(!feof($fp)) {
        $linha = fgets($fp, 4096);
        echo $linha;
    }
    fclose($fp);
}


Bom pessoal, hoje nós vimos o básico de como manipular arquivos de texto.
Não deixem de visitar o site e conferir outras matérias super interessantes.
Um abraço e até a próxima!

Publicado em Dev | Tags: ajax, css, css3, elephant, ftp, html, html5, jquery, php, php5, script | 6 Comentários
« Palestra online e gratuita sobre Windows 10
Alterando a língua do “League of Legends” – Windows – ATUALIZADO (2016) »

6 thoughts on “Manipulação de arquivos do tipo texto com PHP”

  1. Evaldo Junior diz
    18 de dezembro de 2014 às 10:13

    Muito bacana. Bom para iniciantes :)

    Responder
    • Rodrigo Maciel diz
      29 de dezembro de 2014 às 11:35

      Obrigado Evaldo.
      Nesse artigo estou realmente focando o básico, mas estou preparando material de nível mais avançado.
      Tem alguma matéria que você gostaria de ver?

      Responder
  2. Saulo Souza diz
    27 de julho de 2015 às 13:51

    Queria que você fala -se sobre manipular dois ou mais arquivos e como comparar registros entre eles. Por exemplo identificar registros iguais.

    Responder
  3. Celso Ferreira Santos diz
    29 de outubro de 2015 às 12:53

    Saulo você conseguiu fazer funcionar?

    Responder
  4. Vicente Neto diz
    7 de fevereiro de 2016 às 13:25

    muito bom, gostaria de saber se tem como abrir um arquivo já existente e acrescentar mais conteúdo a partir de uma linha especifica?

    Responder
  5. Noronha diz
    7 de julho de 2019 às 11:13

    Olá
    Já procurei pala intenet quase toda e nao achei o que preciso, por isso estou aqui pedindo a ajuda de voces, tenho um arquivo em teste.TXT que contém as seguintes Linhas.

    Ex:

    01 02 03 04 05
    01 02 03 04 06
    01 02 03 04 07
    01 02 03 04 08

    E por ai vai…

    E preciso pegar as informações dessas linhas e mostrar na tela da seguinte forma.

    Você teria feito 1 acertos em 150.
    Você teria feito 2 acertos em 33 .
    Você teria feito 3 acertos em 1.
    Você não teria feito 4 acertos.
    Você não teria feito 5 acertos.

    Será que alguém pode me ajudar?
    Obrigado.

    Responder

Deixe uma resposta Cancelar resposta

Páginas

  • Autores
    • Carlos Sathler
    • Douglas Portugal
    • Erick Martinez
    • Jeferson Salles
    • Maurício Nunes
    • Mauro Sérgio
    • Ricardo Martins
    • Ricardo Pinheiro
    • Rodrigo Maciel
    • Silney Lopes
    • Vagner Matos
  • Checkout
    • Purchase Confirmation
    • Purchase History
    • Transaction Failed
  • Eventos
  • Eventos
  • Fale Conosco
  • Galeria de Vídeo
  • Grupos do Telegram
  • Lista VIP
  • Nossa Equipe
  • Receba mais informações
  • ShowCasts
  • Sobre
  • Teste a sua velocidade
  • Video Gallery
  • Video Grid Gallery

Archives

  • junho 2018
  • maio 2018
  • fevereiro 2018
  • outubro 2017
  • setembro 2017
  • agosto 2017
  • fevereiro 2017
  • janeiro 2017
  • dezembro 2016
  • julho 2016
  • junho 2016
  • maio 2016
  • abril 2016
  • março 2016
  • fevereiro 2016
  • janeiro 2016
  • dezembro 2015
  • novembro 2015
  • outubro 2015
  • setembro 2015
  • agosto 2015
  • julho 2015
  • junho 2015
  • maio 2015
  • abril 2015
  • março 2015
  • fevereiro 2015
  • janeiro 2015
  • dezembro 2014
  • novembro 2014
  • outubro 2014
  • setembro 2014
  • agosto 2014
  • julho 2014
  • junho 2014
  • maio 2014
  • abril 2014
  • janeiro 2014
  • dezembro 2013
  • outubro 2013
  • setembro 2013
  • julho 2013
  • junho 2013
  • maio 2013
  • abril 2013
  • março 2013
  • fevereiro 2013
  • janeiro 2013
  • setembro 2012
  • agosto 2012
  • julho 2012
  • abril 2011
  • março 2011
  • fevereiro 2011

Categorias

  • AWS (7)
  • BSD (3)
  • Cloud Computing (11)
  • Dev (13)
  • DevOps (3)
  • Entrevistas (1)
  • Gestão (8)
  • GNU/Linux (135)
  • IoT (4)
  • Microsoft (86)
    • Hyper-V (9)
    • Office 365 (3)
    • Skype For Business (1)
    • SQL Server (1)
    • System Center (2)
    • Windows Server (2)
  • Monitoração (4)
  • Rede (37)
  • redes (10)
  • Segurança (23)
  • Sem categoria (25)
  • SharePoint (4)
  • ShowCasts (13)
  • Vagas (13)
  • VMware (1)
  • Windows (96)

WordPress

  • Acessar
  • WordPress

Inscrever

  • Posts (RSS)
  • Comentários (RSS)
© 2012 Mundo TI Brasil
 

Carregando comentários...