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: 79.871 ]

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

O perigo no gerenciador de uploads do PHP

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

Trabalhando com arquivos em PHP

Organizando fotos de camêra digital

Gerando documentos PDF com a classe FPDF no PHP

  
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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts