sábado, 26 de outubro de 2013

Tratamento de arquivo com PHP

Tratamento de arquivo com PHP


Bom dia, caros amigos e alunos. Hoje vamos falar sobre tratamento de arquivos em PHP. Não é comum em desenvolvimento de páginas termos que ler ou gravar dados em arquivos, mas as vezes precisamos fazê-lo. Por essa razão posto esse assunto.

Posso parecer falar de mais, falando coisas que para uns seriam óbvias, porém a experiência me mostra que o que é óbvio para uns não o é para outros.

Você precisa ter na cabeça que irá precisar realizar três passos para manipular um arquivo, o segundo passo é o que mais trabalho e poderá ser subdividido em outros passos.

Passo 1. Abrir arquivo

Nesse passo você pede para o PHP localizar, disponibilizar o arquivo para ser manipulado e reservar recursos para tal. Nesse momento você precisará informar para quê você deseja abrir esse arquivo, dessa forma ele irá reservar os recursos de máquina necessários para sua operação.

Para abrir o arquivo você usa a função fopen. Veja sua descrição a seguir.

fopen(string <nome do arquivo>, string <modo>)

nome do arquivo - o nome do arquivo com o caminho completo.

modo - mode de abertura do 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 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. 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. Se o arquivo não existir, tenta criá-lo.


Exemplos

<?php
   $handle = fopen("/home/rasmus/file.txt", "r");
   $handle = fopen("/home/rasmus/file.gif", "w");
   $handle = fopen("http://www.example.com/", "r");
?>



Passo 2. Tratar arquivo

Tratamento do arquivo. Não faz sentido você abrir o arquivo e não fazer nada com ele. Pois bem, você pode ler o mesmo, gravar linhas nele ou os dois, tudo vai depender se você o abriu da forma correta e da sua necessidade.

As funções de leitura e escrita em arquivos estão a seguir.


==== Função fgetc() ====

fgetc(resouce <manipulador>)

manipulador - é retornado pela função fopen().

Essa função obtém um caractere de um dado ponteiro de arquivo. O ponteiro após a leitura se move para o próximo caractere.

Exemplo:

<?php
    $fp = fopen('algumarquivo.txt', 'r');
    if (!$fp) {
        echo 'Não é possivel abrir algumarquivo.txt';
    }
    while (false !== ($char = fgetc($fp))) {
        echo "$char\n";
    }
?>



==== Função fgetcsv() ====

fgetcsv(resource <manipulador> [, int <tamanho> [, string <delimitador> [, string <cercador> [, string <escape> ]]]])

manipulador - É retornado pela função fopen().

tamanho - Deve ser maior do que a maior linha (em caracteres) a ser encontrada no arquivo CSV (permitindo caracteres de fim-de-linha). Se tornou opcional no PHP 5. Omitir este parâmetro (ou defini-lo como 0 no PHP 5.0.4 e posterior) o tamanho da linha não é limitado, o que é levemente mais lento.

delimitador - Define o delimitador de campo (somente um caractere). O padrão é uma vírgula.

cercador - Define o caractere que cerca um campo (somente um caractere). O padrão é aspas duplas.

escape - Define o caractere de escape (somente um caractere). O padrão é barra invertida (\)


Exemplo:

<?php
$row = 1;
$handle = fopen ("teste.csv","r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count ($data);
    echo "<p> $num campos na linha $row: <br /></p>\n";
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo $data[$c] . "<br />\n";
    }
}
fclose ($handle);
?>




==== Função fgetcsv() ====

fgets(resource <manipulador> [, int <tamanho> ])

manipulador - É retornado pela função fopen().

tamanho - A quantidade de bytes a serem lidos. É importante frisar que os caracteres de mudança de lina e retorno são considerados para essa contagem. Se esse parâmetro não for informado será lida a linha inteira, incluindo os caracteres de retorno e mudança de linha.


Exemplo:

<?php
$handle = fopen ("teste.txt","r");
while (($data = fgets($handle)) !== FALSE) {
    $row++;
    echo $data[$c] . "<br />\n";
}
fclose ($handle);
?>



==== Função split() ====

split(string <separador> , string <texto>  [, int <quantidade> ])

Essa função não exatamente para ser usada para se tratar arquivo, mas dependendo da situação precisamos separa informações que foram lidas previamente.

separador - é o caractere que está separando as informações. Ele é utilizado para identificar quando um dado começa e outro termina.

texto - É o texto que contem as informações que precisam ser separadas.

quantidade - determina a quantidade de campos que serão separados. É importante quando existem muitos dados no texto separados mas se deseja apenas os primeiros dados.



Exemplo:

<?php
   $data = "2013-12-21";
   list ($mes, $dia, $ano) = split ('-', $data);
   echo "Dia: $dia; Mês: $mes; Ano: $ano<br />\n";
?>



Passo 3. Fechar arquivo

Após realizar todas as operações com o arquivo precisamos fecha-lo. Para isso usamos a função close, já usado nos exemplos anteriores.

fclose(resource <manipulador>)

manipulador - é criado no momento da abertura do arquivo.




    É isso aí amigos, espero ter ajudado mais uma vez.




    Nenhum comentário:

    Postar um comentário