Manipulação de arquivos com PHP

Embora não muito utilizado, às vezes nos deparamos com situações em que não há banco de dados. Nestes casos a solução é partir para os .txt. Este artigo nos apresenta as principais funções do PHP para tal.

[ Hits: 84.169 ]

Por: Igor H. da Cruz em 06/09/2003


Funções para txt



Vamos abordar as seguintes funções:
  • fopen() - abre um arquivo
  • fwrite() - escreve em um arquivo
  • fclose() - fecha um arquivo
Algumas referências: Exemplo de uma manipulação:

<?php
// Abre ou cria o arquivo exemplo1.txt
// "a" representa que o arquivo é aberto para ser escrito
$fp = fopen("exemplo1.txt", "a");

// Escreve "primeiro exemplo" no exemplo1.txt
$escreve = fwrite($fp, "primeiro exemplo");

// Fecha o arquivo
fclose($abre);
?>

Como resultado é criado um arquivo chamado exemplo1.txt, escrito "primeiro exemplo". Se você repetir a ação, "primeiro exemplo" será escrito novamente no fim desse arquivo.

É importante notar que você tem diversas maneiras de abrir um arquivo, que são representadas por letras. No exemplo acima utilizamos o modo "a", veja abaixo a lista de todos os modos e suas descrições:
  • 'r' - abre somente para leitura; coloca o ponteiro no começo do arquivo.
  • 'r+' - abre para leitura e gravação; coloca o ponteiro no começo do arquivo.
  • 'w' - abre somente para gravação; coloca o ponteiro no começo do arquivo e apaga o conteúdo que já foi escrito. Se o arquivo não existir, tenta criá-lo.
  • 'w+' - abre para leitura e escrita; coloca o ponteiro no início do arquivo e apaga o conteúdo que já foi escrito. Se o arquivo não existir, tenta criá-lo.
  • 'a' - abre o arquivo somente para escrita; coloca o ponteiro no fim do arquivo. Se o arquivo não existir, tenta criá-lo.
  • 'a+' - abre o arquivo para leitura e gravação; coloca o ponteiro no fim do arquivo. Se o arquivo não existir, tenta criá-lo.
Com estas três funções você pode criar, escrever e fechar um arquivo facilmente. Lembrando que você também pode usar a função fputs() (http://www.php.net/manual/pt_BR/function.fputs.php) para escrever em um arquivo.

Funções extra: Primeiro vamos criar um formulário simples para o usuário cadastrar seus dados, que pode ser chamado de form.html:

CADASTRO:

<form method="POST" action="cadastra.php">
Nome: <input type="text" size="10" name="nome"><br>
E-mail: <input type="text" size="10" name="email"><br>
Endereço: <input type="text" size="10" name="endereco"><br>
Telefone: <input type="text" size="10" name="telefone"><br>
<br><input type="submit" value="cadastrar">
</form>

Este formulário passará as variáveis nome, email, endereco e telefone, que serão cadastradas em seu respectivo arquivo de texto. A ação do formulário está como cadastra.php, que será o arquivo contendo o necessário para cadastrar o usuário no arquivo.

<?php
// Verifica se todos os campos foram preenchidos
if (!$nome || !$email || !$endereco || !$telefone) {
    echo "preencha todos os campos";
} else {
    // Verifica se um usuário com o mesmo nome já foi cadastrado
    if(!file_exists($nome . ".txt")) {
        // Criamos o arquivo do usuário com w+
        $cria = fopen($nome . ".txt", "w+");

        // Aqui iremos declarar as informações do usuário
        // São separadas por | para depois podermos recupera-las com explode
        $dados .= "$nome|";
        $dados .= "$email|";
        $dados .= "$endereco|";
        $dados .= "$telefone";

        // Agora escrevemos estes dados no arquivo
        $escreve = fwrite($cria,$dados);

        // Fechando o arquivo
        fclose($cria);

        // Exibe a mensagem de usuário cadastrado
        echo "usuário cadastrado com sucesso!";
    } else {
        // Se já houver um usuário cadastrado com o mesmo nome
        echo "um usuário chamado $nome já foi cadastrado";
    }
}
?>

Como você pode ver, agora estamos interagindo com funções básicas, com as funções que vimos neste artigo. Com estes dois arquivos criados nós já temos o envio de dados para um arquivo de texto, onde os valores são separados por "|".

O caracter "|" será utilizado para separar os dados, com se fossem colunas. Com a função explode poderemos separar os dados a gosto.

Por fim, criaremos um arquivo para visualizar todos os usuários cadastrados. Estaremos usando a função readdir(), que é essencial para quem usar sistemas desse tipo.

<?php
// Primeiro definiremos onde estão os arquivos
// ./ significa que os arquivos estão no diretório atual
$dir = "./";

// Abre o diretório $dir
$abredir = opendir($dir);

// Faz o loop para a exibição de usuários
while ($arqs = readdir($abredir)) {
    // Aqui fazemos o php tirar "." e ".." que são "bugs" do readdir()
    // Também faz com que só sejam abertos arquivos de texto
    if ($arqs != "." && $arqs != ".." && is_file($arqs) && ereg(".txt", $arqs)) {

        // Agora iremos abrir arquivo por arquivo, e exibir os dados do usuário
        // Usamos o "r" pois somente queremos ler o arquivo
        $abre = fopen($arqs,"r");

        // Usamos fread agora para ler o arquivo
        $le = fread($abre,filesize($arqs));

        // Agora vem o grande truque, separamos os dados pelo "|" com explode
        $dado = explode("|",$le);

        // Define os registros
        $nome = $dado['0'];
        $email = $dado['1'];
        $endereco = $dado['2'];
        $telefone = $dado['3'];

        // Vamos mostrar os dados que obtivemos
        echo "Usuário: <b>$nome</b><br>";
        echo "nome: $nome<br>";
        echo "e-mail: $email<br>";
        echo "endereço: $endereco<br>";
        echo "telefone: $telefone<br><br>";
    }
}

// Fecha o diretório
closedir($abredir);
?>

Assim é feito um simples script, com um banco de dados simulado em um arquivo de texto. Você pode incrementar muito mais e fazer scripts mais amplos e cada vez mais úteis!

   

Páginas do artigo
   1. Funções para txt
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Organizando fotos de camêra digital

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

Gerando documentos PDF com a classe FPDF no PHP

O perigo no gerenciador de uploads do PHP

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

  
Comentários
[1] Comentário enviado por reisinho em 08/09/2003 - 23:37h

ticudddddooooooooooo!!!

[2] Comentário enviado por reisinho em 08/09/2003 - 23:38h

todo mundo junto...
3
2
1
..NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP

[3] Comentário enviado por jllucca em 09/09/2003 - 15:56h

Cara, o artigo ta dez! Parabéns! So discordo quanto a "." e ".." serem bugs do "readdir()". Mas, no geral o artigo fico ótimo!

[4] Comentário enviado por Ale_ em 25/05/2004 - 17:56h

Mt bom !!! hehe... ajudou o iniciante aki !!!

[5] Comentário enviado por leandro_hamid em 19/09/2007 - 11:42h

Obrigado pelo artigo, me ajudou bastante ainda mais que eu também sou iniciante mas eu acabei ficando com dúvidas com relação ao código cadastra.php:

1º: Será que não deveria ser passado um 'include' para a chamada do formulário?

Exemplo: include "form.html";

2º: A instrução para a ciração do arquivo não gerará inconsistência?Pois de acordo com a intrução abaixo o arquivo não foi criado.

Exemplo: " $cria = fopen($nome . ".txt", "w+");"

Ps: Se estiver errado favor desconsiderar comentário.

[6] Comentário enviado por manfilho em 04/04/2008 - 22:48h

Olá, eu não sei de onde todo mundo copiou esse exemplo, o primeiro, mas ESTÁ ERRADO

<?php
$fp = fopen("exemplo1.txt", "a");
$escreve = fwrite($fp, "primeiro exemplo");
fclose($abre);
?>


Não é fclose($abre);

Que variável é essa? $abre? o certo é fechar a $fp


<?php
$fp = fopen("exemplo1.txt", "a");
$escreve = fwrite($fp, "primeiro exemplo");
fclose($fp);
?>

[7] Comentário enviado por deadlock em 17/07/2008 - 09:38h

?comentario= aewwwww finalmente achei o que tava procurando... parabens aew mt bom resolveu meu problema vlw mesmo! Parabens

[8] Comentário enviado por facb69 em 01/12/2009 - 13:57h

muito bom o tutorial mas quero apontar uma inconsistência:

// São separadas por | para depois podermos recupera-las com explode
$dados .= "$nome|";

como a variável $dados não existe não se pode usar o operador .= pois ele serve para adicionar valor a uma variável sem perder o que ela já tinha. resumindo: ele soma valores a uma variável já existente.
como $dados não existia, é necessária criá-la bastando remover o ponto.
lembrando que no php não é necessário declarar uma variável, basta criá-la como abaixo:

dados = "$nome|";

as posteriores teriam o operador .= para somar valores.

abraço,

fábio

[9] Comentário enviado por sneeps.ninja em 06/02/2012 - 17:48h

horrivel este plágio, já tem o mesmo código com os mesmos erros

Nem se deu o trabalho de rodar uma vez para ver se dava erro, warning ou notice

quando for plagiar muda ai o nome das variaveis e comente como um profissional

// Abre ou cria o arquivo exemplo1.txt
// PARAMETRO "a" leia a documentacao sobre a funcao: representa que o arquivo é aberto para SOMENTE LEITURA

$fp = fopen("exemplo1.txt", "a"); //OK

// Escreve "primeiro exemplo" no exemplo1.txt //OK
$escreve = fwrite($fp, "primeiro exemplo"); //ONDE USOU A VARIAVEL $ESCREVE? EM LUGAR NENHUM NEM COMENTOU PARA Q SERVE
//$ESCREVE=RETORNA A QTD DE CHAR ESCRITOS NO ARQUIVO

// Fecha o arquivo
fclose($abre); //$ABRE??? $ABRE AONDE??? O NOME DA VARIAVEL QUE USOU NO INICIO SE CHAMA $FP


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts