Criar e escrever arquivos em PHP

Gustavo Paes, 21/10/2010

Como em qualquer outra área, você pode fazer as coisas do jeito fácil ou do jeito complicado. As vezes o jeito complicado é o único que você conhece e, portanto, ele é o jeito fácil para você.

Confesso que até ontem o jeito fácil para eu escrever um arquivo era usando o trio fopen(), fwrite() e fclose().

Complicado: usando três funções para ler e escrever

Como disse acima, antes de conhecer a função mágica, ou eu usava uma classe para trabalhar com arquivos ou usava as três funções básicas de leitura e escrita de arquivos. Portanto, um código padrão de leitura e escrita seria o seguinte:

<?php
// Abre o arquivo para leitura e escrita
$f = fopen("arquivo.txt", "rw+");

// Lê o conteúdo do arquivo
$content = "";
if(filesize("arquivo.txt") > 0)
  $content = fread($f, filesize("arquivo.txt"));

// Escreve no arquivo
fwrite($f, "Olá mundo\n");

// Libera o arquivo
fclose($f);

echo $content;
?>

O jeito simples

Usando file_get_contents()

O PHP possui a função file_get_contents() que faz exatamente o que o código acima faz — na parte da leitura. O uso é extremamente simples:

<?php
$content = file_get_contents("arquivo.txt");
echo $content;

// Ou simplesmente...
echo file_get_contents("arquivo.txt");
?>

Além de arquivos locais, ele permite que você passe uma URL para capturar o conteúdo da página. Para isso, basta informar qual URL deve ser visualizada:

<?php
ini_set("allow_url_fopen", TRUE);
echo file_get_contents("http://www.uol.com.br/");
?>

Usando file_put_contents()

Para escrever é a mesma coisa. Só que usamos a função file_put_contents() que, além de criar o arquivo caso ele não exista, permite que se concatene um conteúdo.

<?php
// Criando um novo arquivo
file_put_contents("novo.txt", "Primeira linha do arquivo\n");

// Exibe o conteúdo
echo file_get_contents("novo.txt");

// Retorno: Primeira linha do arquivo

// Se tentarmos criar uma nova linha
file_put_contents("novo.txt", "Segunda linha...\n");

// Vamos perceber que o conteúdo anterior foi perdido
echo "\n";
echo file_get_contents("novo.txt");

// Retorno: Segunda linha...

// Para concatenar o conteúdo, devemos passar um terceiro parâmetro
file_put_contents("novo.txt", "Agora sim a segunda linha...", FILE_APPEND);

echo "\n";
echo file_get_contents("novo.txt");

// Retorno:
// Segunda linha...
// Agora sim a segunda linha...
?>

Conclusão

Não tem muito o que concluir. Usando essas duas funções as chances de erro diminuem bastante. Portanto, sugiro a leitura: http://br.php.net/file_put_contents http://br.php.net/file_get_contents