Trabalhando com arquivos em PHP

Apesar de termos a possibilidade de trabalhar com banco de dados em PHP, existem situações em que um simples arquivo texto resolve o problema. Tratarei aqui das várias formas de abrir, ler e gravar um arquivo usando a PHP.

[ Hits: 70.357 ]

Por: Caio Filipini em 11/11/2002


Escrevendo e lendo arquivos



Agora que já sabemos como abrir e fechar um arquivo, precisamos conhecer as funções que manipulam esse arquivo. Primeiro, daremos uma olhada nas funções para escrita de dados de um arquivo.

fwrite(): Esta função permite escrever strings em um arquivo. Se os dados forem escritos com sucesso, fwrite() retorna o número de bytes escritos; caso contrário, retorna -1 (indicando erro). Ela tem a seguinte sintaxe:

fwrite(handle, string);
- handle: handle do arquivo onde os dados serão escritos;
- string: string a ser escrita no arquivo;

Exemplo:

<?php
$fp = fopen("./dados.txt", "w");
fwrite($fp, "Hello world!"); // grava a string "Hello world!" no arquivo
fclose($fp);
?>

fputs(): Esta função é semelhante à função fwrite() e funciona da mesma maneira.

Depois de escrevermos os dados no arquivo, precisamos ser capazes de ler os dados que acabamos de gravar. É exatamente isso o que iremos aprender agora, funções para leitura de dados de um arquivo.

fread(): Esta função permite ler strings gravadas em um arquivo. A sintaxe é a seguinte:

fread(handle, length);
- handle: handle do arquivo de onde os dados serão lidos;
- length: tamanho em bytes do buffer de leitura;

Exemplo:

<?php
$fp = fopen("./dados.txt", "r");
$text = fread($fp, 20); // lê 20 bytes do arquivo e armazena em $text
fclose($fp);
?>

fgets(): Esta função é usada na leitura de strings de um arquivo. fgets() lê "length - 1" bytes do arquivo. Se for encontrado o final da linha e o número de bytes especificados não tiver sido atingido, fgets() terminará a leitura no final da linha (ou no final do arquivo, se for o caso). Eis a sua sintaxe:

fgets(handle, length);
- handle: handle do arquivo de onde os dados serão lidos;
- length: tamanho em bytes do buffer de leitura;

Exemplo:

<?php
$fp = fopen("./dados.txt", "r");
$text = fgets($fp, 20);
fclose($fp);
?>

fgetc(): Esta função permite ler caractere por caractere de um arquivo. Seguem a sintaxe e um exemplo de utilização:

fgetc(handle);
- handle: handle do arquivo de onde os dados serão lidos;

Exemplo:

<?php
$fp = fopen("./dados.txt", "r");
do {
    $char .= fgetc($fp);
} while($char);
fclose($fp);
?>

file(): Esta função lê um arquivo completo, e armazena cada linha do arquivo como um elemento de um array. Depois de ler todo o conteúdo do arquivo, file() o fecha automaticamente, não sendo necessária uma chamada a fclose(); Vejamos a sintaxe:

file(filename);
- filename: nome ou caminho completo de um arquivo.

Exemplo:

<?php
$file_lines = file("./dados.txt");
echo "Primeira linha: " . $file_lines[0];
?>

Além dessas funções para leitura e escrita, existe ainda uma função bastante útil, que testa se o final do arquivo foi atingido. É a função feof(), que tem a seguinte sintaxe:

feof(handle);
- handle: handle do arquivo;

Exemplo:

<?php
$fp = fopen("./dados.txt", "r");
while(!feof($fp)) {
    $char .= fgetc($fp);
}
fclose($fp);
?>

É isso aí! Existem diversas outras funções em PHP para a manipulação de arquivo, inclusive para acesso aleatório. Porém, o intuito deste tutorial é mostrar a base da manipulação de arquivos. Aqueles que estiverem interessados em aprender o assunto mais a fundo, há uma referência de todas as funções da linguagem PHP no manual, disponível em http://www.php.net.

Página anterior    

Páginas do artigo
   1. Abrindo e fechando um arquivo
   2. Escrevendo e lendo arquivos
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

O perigo no gerenciador de uploads do PHP

Manipulação de arquivos com PHP

PEAGLE: Serviço Web de busca indexada em seu servidor local

Organizando fotos de camêra digital

Upload de imagens com criação de thumbnails em PHP

  
Comentários
[1] Comentário enviado por lamss em 25/12/2002 - 17:00h

Estou começando a programar em PHP e essas dicas
são interessantes para os iniciantes nessa linguagem
de programação...
Valeu espeso ver mais dessas dicas aqui nesse site.

[2] Comentário enviado por bianorneto em 15/03/2005 - 18:48h

<?php
$fp = fopen("./dados.txt", "r");
do {
$char .= fgetc($fp);
} while($char);
fclose($fp);
?>

Parabéns pelo artigo, mas acho que na próxima página, a função fgetc você equivocadamente colocou (.=) e pelo menos no meu pc nao funcionou, somente funcionou depois que troquei colocando (=). Valeu.

[3] Comentário enviado por paulopugin em 17/04/2008 - 17:43h

Olá,
como faço para distinguir uma quebra de linha em arquivo de texto no php?

[4] Comentário enviado por viniciusmarcius em 20/06/2008 - 02:23h

POw car muito bom seu tuto...eu programo em c++ E TO TENTANDO ME ADAPTAR ao mundo web, com a ajuda de vocês será muito mais facil....abraços

[5] Comentário enviado por guiguix em 29/06/2008 - 11:50h

Olá queridos colegas doVOL, eu uso um Slack12 c/ Apache PHP e MySQL (que vem nele).... porém ocorre o seguinte:
O módulo PHP só reconhece a abertura "<?php" .... ou seja, ele não reconhece o "<?" ....
alguém pode me ensinar como alterar isso?
já baixei o livro do Craig, e o tal PHPTOTAL, e nada! Já abri os arquivos de configuração do php e não percebi nenhuma configuração do tipo.

[6] Comentário enviado por albertguedes em 24/07/2008 - 14:15h

guiguix , esse lance deve ser no apache, e não no php.

[7] Comentário enviado por eduardo.azevedo em 31/07/2008 - 13:38h

Olá,
Sou iniciante, em meus testes ja consegui fazer a leitura de um arquivo e apresenta-lo em uma pagina, contudo eu gostaria de manipular a informação que quero que apareça.
tipo.. quero que apereça em um determinado "form" uma posição e tamanho deste arquivo.
Você ja fez isto alguma vez ?

Um abraço.

[8] Comentário enviado por eduardo.azevedo em 31/07/2008 - 13:41h

Sou iniciante, em meus testes ja consegui fazer a leitura de um arquivo e apresenta-lo em uma pagina, contudo eu gostaria de manipular a informação que quero que apareçe.
tipo.. quero que apereça em um determinado "form" uma posição e tamanho deste arquivo.
Você ja fez isto ?

Um abraço.

[9] Comentário enviado por luizbarcelos em 08/05/2009 - 22:26h

Olá,
Você deveria escrever um livro para iniciantes em php.
Gostei do seu tutorial, explica o comando com suas chaves,
Isso é legal.

Abraços Luiz.

[10] Comentário enviado por C.A.R.O em 20/04/2010 - 13:42h

Muito bom o artigo , estou usando ele para fazer um site tipo como o youtube :D , valeu ai por compartilhar .

<?php
$fp = fopen("./teste.php", "a+");// usando o a+ adiciona a informação ao final do arquivo
fwrite($fp, "\nHello world!"); // grava a string "Hello world!" no arquivo
fclose($fp);
?>


hehehehh

[11] Comentário enviado por alex_arantes8 em 11/04/2012 - 22:25h

boa noite preciso de uma ajuda se possivel em PHP urgente ,.
tenho o seguinte problema.
arquivo1- contem varias linha como abaixo
78900000
78911111
78922222
certo, ok.
arquivo2. contem varias linha tambem segue abaixo
789355555
789644444
789733333
porem preceiso checar o arquivo dois(2) com o arquivo (1) se os 3 caracteres primeiro for igual gravo a linha do arquivo 2 dentro do arquivo 1 ficando assim
arquivo 1 depois que rodar o scrip.
789355555
789644444
789733333
Ugente


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts