Vous êtes sur la page 1sur 32

PHP: Manipulao de Arquivos

Programao de Servidores Marx Gomes Van der Linden

Manipulao de Arquivos

PHP define diversas funes para leitura e escrita de arquivos de texto. Arquivos de texto so ideais para o armazenamento de dados simples. Mais complexidade: banco de dados. Deve-se sempre prestar ateno ao esquema de permisses de arquivos no servidor.

http://marx.vanderlinden.com.br/

file_get_contents

A funo file_get_contents l todo o contedo de um arquivo de texto, e o armazena em uma string. Sintaxe: file_get_contents($arquivo)

Retorna o contedo do arquivo, ou false, se houver erro.

http://marx.vanderlinden.com.br/

file_get_contents

modelo.html

Nome: {nome}<br> E-mail: {email}<br>

pagina.php

$texto = file_get_contents('modelo.html'); echo str_replace( array('{nome}','{email}'), array('Fulano de Tal','fulano@detal.com'), $texto )


http://marx.vanderlinden.com.br/ 4

file_get_contents

Sada:

Nome: Fulano de Tal<br> E-mail: fulano@detal.com<br>

http://marx.vanderlinden.com.br/

file_get_contents

file_get_contents pode ser usada para obter um arquivo a partir de uma URL externa.

$slashdot = file_get_contents( 'http://www.slashdot.org/' );

http://marx.vanderlinden.com.br/

file_put_contents

A funo file_put_contents salva o contedo de uma string em um arquivo de texto local. Sintaxe: file_put_contents($arquivo, $conteudo) $conteudo pode ser um array ou uma string. Retorna o nmero de bytes escritos no arquivo, ou false, em caso de erro

http://marx.vanderlinden.com.br/ 7

file_put_contents
$linhas = array( 'Primeira linha.', 'Segunda linha.', 'Terceira linha.' ); $bytes = file_put_contents('teste.txt',$linhas); if($bytes) echo "$bytes bytes escritos"; else echo "Erro!";
http://marx.vanderlinden.com.br/

file_put_contents

Sada:

44 bytes escritos

texte.txt:

Primeira linha.Segunda linha.Terceira linha.

http://marx.vanderlinden.com.br/

file_put_contents
$linhas = array( 'Primeira linha.', 'Segunda linha.', 'Terceira linha.' ); $bytes = file_put_contents( 'teste.txt', implode("\n", $linhas) ); if($bytes) echo "$bytes bytes escritos"; else http://marx.vanderlinden.com.br/ echo "Erro!";

10

file_put_contents

Sada:

46 bytes escritos

texte.txt:

Primeira linha. Segunda linha. Terceira linha.

http://marx.vanderlinden.com.br/

11

Lendo um arquivo por partes

possvel ler um arquivo passo a passo, ao invs de carreg-lo todo em memria, de uma s vez.

til para o processamento de arquivos longos. fopen fgets / fgetc feof fclose
http://marx.vanderlinden.com.br/ 12

Funes:

fopen

fopen($arquivo, $modo)

L o $arquivo especificado. Retorna uma Referncia de Arquivo, ou false em caso de erro. $modo pode ser:
'r' 'w' 'a' Somente leitura. Somente escrita. Cria ou sobrescreve o arquivo. Somente escrita. Cria ou continua o arquivo.
13

'r+' Leitura e escrita. 'w+' Leitura e escrita. Cria ou sobrescreve o arquivo.


http://marx.vanderlinden.com.br/ 'a+' Leitura e escrita. Cria ou continua o arquivo.

fgetc, fgets

fgetc($recurso) L e retorna o prximo caractere do Recurso de Arquivo especificado. fgets($recurso)


L e retorna a prxima linha do Recurso de Arquivo especificado.

http://marx.vanderlinden.com.br/

14

feof, fclose

feof($recurso) Retorna true, se o arquivo indicado pelo $recurso tiver chegado ao fim; false, do contrrio. fclose($recurso)

Finaliza a manipulao do arquivo e o libera ao sistema operacional.

http://marx.vanderlinden.com.br/

15

Lendo por caractere


$rec = fopen('teste.txt', 'r'); $i = 0; while(!feof($rec)){ $linha = fgetc($rec); echo "Caractere $i: $linha<br>\n"; $i++; } fclose($rec);

http://marx.vanderlinden.com.br/

16

Lendo por caractere


Caractere Caractere Caractere Caractere Caractere Caractere Caractere Caractere Caractere Caractere Caractere Caractere Caractere (...) 0: P<br> 1: r<br> 2: i<br> 3: m<br> 4: e<br> 5: i<br> 6: r<br> 7: a<br> 8: <br> 9: l<br> 10: i<br> 11: n<br> 12: h<br>
http://marx.vanderlinden.com.br/ 17

Lendo por linha


$rec = fopen('teste.txt', 'r'); $i = 0; while(!feof($rec)){ $linha = fgets($rec); echo "Linha $i: $linha<br>\n"; $i++; } fclose($rec);

http://marx.vanderlinden.com.br/

18

Lendo por linha

Linha 0: Primeira linha. <br> Linha 1: Segunda linha. <br> Linha 2: Terceira linha.<br>

http://marx.vanderlinden.com.br/

19

Escrevendo um arquivo por partes

Para escrever em um arquivo passo a passo, usam-se as mesmas funes fopen (ateno para as opes!) e fclose. Para escrever no Recurso, usa-se: fwrite($res, $string)

http://marx.vanderlinden.com.br/

20

Escrevendo um arquivo por partes


$rec = fopen('teste2.txt', 'wr+'); if(!rec){ echo "Erro!"; } else{ fwrite($rec, "The book is on the table\n"); fwrite($rec, "1 + 1 = " . (1+1)); fclose($rec); }

http://marx.vanderlinden.com.br/

21

teste2.txt

The book is on the table 1 + 1 = 2

http://marx.vanderlinden.com.br/

22

Verificando arquivos

PHP tambm possui vrias funes voltadas testes realizados sobre arquivos do sistema.

Existncia de arquivos. Permisses. Tamanho e tipo.

http://marx.vanderlinden.com.br/

23

file_exists

file_exists($arquivo)

Retorna true se o arquivo existe; false, do contrrio.

if ( file_exists('/usr/local/htdocs/index.html') ) echo "O arquivo existe!"; else echo "O arquivo no existe!";
http://marx.vanderlinden.com.br/ 24

Permisses

is_readable($arquivo) is_writable($arquivo) is_executable($arquivo)

Funes que retornam true ou false, dependedo a permisso verificada (leitura, escrita, execuo)

http://marx.vanderlinden.com.br/

25

Tipo de Arquivo

is_dir($arquivo) is_file($arquivo) is_link($arquivo)

Funes booleanas que verificam se o arquivo , respectivamente um diretrio, um arquivo comum ou um link simblico.

http://marx.vanderlinden.com.br/

26

Diretrio e Arquivo

dirname($caminho) Retorna a poro do $caminho composta pelo diretrio. basename($caminho, [$extensao])


Retorna a poro do $caminho composta pelo nome do arquivo. Se o nome do arquivo terminar em $extensao, essa tambm ser eliminada.
http://marx.vanderlinden.com.br/ 27

Tamanho do Arquivo

filesize($arquivo)

Retorna o tamanho do arquivo (em bytes).

http://marx.vanderlinden.com.br/

28

<?php Exemplo function ilista($txt){ echo "<li>O arquivo $txt.</li>\n"; } $arquivo = '/etc/apt/sources.list'; if(file_exists($arquivo)){ ?> <h3><?= $arquivo ?></h3> Diretrio: <strong><?= dirname($arquivo) ? ></strong><br> Arquivo: <strong><?= basename($arquivo) ?></ strong><br> Arquivo sem extenso: <strong><?= basename($arquivo, '.list') ?></strong><br> Tamanho: <strong><?= filesize($arquivo) ?></ 29 strong> bytes<br> http://marx.vanderlinden.com.br/

<ul> <?php if(is_readable($arquivo)) ilista('pode ser lido'); if(is_writable($arquivo)) ilista('pode ser escrito'); if(is_executable($arquivo)) ilista(' executvel'); if(is_dir($arquivo)) ilista(' um diretrio'); if(is_file($arquivo)) ilista(' um arquivo comum'); if(is_link($arquivo)) ilista(' um link simblico'); ?> http://marx.vanderlinden.com.br/ 30 </ul>

<?php } else { echo "Erro: arquivo no existe.<br>"; } ?>

http://marx.vanderlinden.com.br/

31

Sada

http://marx.vanderlinden.com.br/

32

Vous aimerez peut-être aussi