0

Trabalhando com arquivos em PHP

criado por Caio Filipini em 14/09/2002 1:57pm
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.

Comentários:

Mostrando 1 - 10 de 12 comentários
Cara to tô precisando muito de uma ajuda de quem for, to começando no php tenho uma query do oracle pra exporta pre texto, porem nao to nein conseguindo abrir um arquivo texto teste tipo:

$fp = fopen('teste.txt', 'r');

ta dando o seguinte error:PHP has encountered an Access Violation at 010173CD, se for uma coisa simples vaum me desculpando pela ignorancia..valew
27/04/2006 7:41am (~18 anos atrás)

gostei do comentario brother!
desse jeito pelo menos dá pra pensar!
os caras nao sabem o que é principiante! valeu mesmo.



www.andartes.com

.
29/03/2006 4:41pm (~18 anos atrás)

Como faço pra deletar um arquivo do servidor? por exemplo, quando eu deleto uma noticia, sua imagem for junto?
29/08/2005 10:26am (~18 anos atrás)

Seguinte amigo.. eu necessito de ler um nome de uma arquivo de texto.. pois no nome dele eh me passado alguns parametros...
ex.:
o nome do arquivo eh...
0002W01206599814578.txt

o 002 eh a ID
o W um codigo de comfimação
o 012 codigo do cliente
e o 06599814578 eh o telefone dele...

como faço pra ler o nome do arquivo e separar estes dados em variaveis.. e no conteudo do arquivo tem uma mensagem de duas linhas.. mas issu eu consegui ler e escrever usando o "file()" e separando a array..

por favor se naum entendeu miha explicação me adicione no Skype ou MSN pra poder me ajudar...

Skype: joaopaulodatalab
MSN: joaopaulopaixao@hotmail.com

desde jah obrigado

JP
22/04/2005 10:49am (~19 anos atrás)

Sei que é banal, mas não estou conseguindo aplicar quebras de linha, como faço?

Já tentei \n chr(13), nada dá certo, imprimem o caracter ao inves de quebrar a linha.
16/09/2004 2:30pm (~19 anos atrás)

Caio Filipini disse:
Já tentou usar "\n" pra quebrar a linha? Eu creio que funcione...

Quanto à manter o conteúdo na escrita, isso depende do modo de abertura do arquivo. Pra apagar o conteúdo do arquivo e gravar tudo de novo, vc deve usar o modo "w". Ex:

$fp = fopen("arquivo.dat", "w");

Valeu!
Caio Filipini
08/11/2002 11:42am (~21 anos atrás)

Paulo Z. disse:
todo e qualquer script que tem essas funçoes da essa porra de erro Warning: fopen("contador.dat", "w") - Permission denied in /DISK2/WWW/pcbanner.com/passamar/easy/admin/functions.php on line 61

Warning: fputs(): supplied argument is not a valid File-Handle resource in /DISK2/WWW/pcbanner.com/passamar/easy/admin/functions.php on line 62

Warning: fclose(): supplied argument is not a valid File-Handle resource in /DISK2/WWW/pcbanner.com/passamar/easy/admin/functions.php on line 63


E nem é chmod pq não tem pra dar, por exemplo no fusion news que a instalação é automatica da esse erro tbm
29/09/2002 10:09pm (~21 anos atrás)

Caio Filipini disse:
Lyma,

Obrigado pelo comentário. Você está coberto de razão. É que demonstrei alguns exemplos bastante simples, e não me preocupei com isso. Mas obrigado pelo complemento.

[]'s
Caio Filipini
25/09/2002 10:12am (~21 anos atrás)

Lyma disse:
Olá!

Excelente artigo Caio!
Gostaria de salientar somente o fator segurança.
Já vi em alguns scripts o parametro do nome de arquivo a ser lido/exibido/manipulado vir de um form ou explícito no link... este tipo de procedimento pode deixar o sistema vulnerável a ataques pois seria possível induzir a leitura de uma arquivo arbitrário (que tal o /etc/passwd?) comprometendo o servidor.
Tendo isto em mente, evita-se uma série de problemas.

Um grande abraço,

Lyma
http://www.lymas.com.br
25/09/2002 5:52am (~21 anos atrás)

Caio Filipini disse:
Felipe, valeu pela ajuda!

Na verdade usei as funções que eu costumava usar em linguagem C, e acabei esquecendo de colocar algumas outras funções.

[]'s
Caio Filipini
24/09/2002 10:23pm (~21 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)