No artigo de hoje, veremos como realizar a leitura e edição de um arquivo com o PHP. Vamos de uma forma simples ler um arquivo linha a linha, e o editar com o PHP.
Abrindo o arquivo
O primeiro passo será abrir o arquivo que queremos ler e editar. Vamos utilizar a função fopen do PHP, que nos permite abrir um arquivo ou URL. Para o exemplo do artigo vamos utilizar o arquivo teste.txt que contém um texto aleatório.
<?php $file = fopen("teste.txt", "r+"); if (!$file) { exit("Falha ao abrir o arquivo"); }
Estamos utilizando o mode r+ que nos permite ler e escrever no arquivo. Para ver todos os modos disponíveis para abrir um arquivo, veja na documentação oficial do PHP.
Lendo o arquivo linha a linha
Após isto, vamos utilizar a função fgets do PHP, para recuperar a linha do arquivo que foi aberto. Para ler todas as linhas do arquivo, utilizamos esta função junto com o while. Com isso criamos um loop que, enquanto houver linhas no arquivo, utilizamos a função fgets para realizar a leitura.
Também utilizamos a função feof, para verificar se chegamos ao fim do arquivo e garantirmos que o arquivo foi lido completamente. Por último utilizamos a função fclose para fechar o arquivo aberto. O código completo ficará da seguinte maneira.
<?php $file = fopen("teste.txt", "r+"); if (!$file) { exit("Falha ao abrir o arquivo"); } while (($line = fgets($file)) !== false) { echo $line; } if (!feof($file)) { exit("Falha inesperada do fgets()"); } fclose($file);
Editando o arquivo
Vamos inserir uma nova linha no arquivo, para escrever no arquivo vamos utilizar a função do PHP fwrite. Esta função realiza a escrita na posição em que o ponteiro está no arquivo.
Assim se abrirmos o arquivo como fizemos anteriormente e utilizar esta função para escrever, vamos escrever no início do arquivo pois o abrimos com o mode r+. Este modo de abertura coloca o ponteiro no início do arquivo.
<?php $file = fopen("teste.txt", "r+"); if (!$file) { exit("Falha ao abrir o arquivo"); } fwrite($file, "Teste no inicio do arquivo\n\n"); while (($line = fgets($file)) !== false) { echo $line; } if (!feof($file)) { exit("Falha inesperada do fgets()"); } fclose($file);
Ao percorrer o array para sua leitura com o fgets, o ponteiro vai se movendo, assim se utilizarmos o fwrite quando o loop estiver no 10 por exemplo, vamos inserir o conteúdo na linha 10.
<?php $file = fopen("teste.txt", "r+"); if (!$file) { exit("Falha ao abrir o arquivo"); } $i = 0; while (($line = fgets($file)) !== false) { if ($i == 10) { fwrite($file, "\n\nTeste no meio do arquivo\n\n"); } echo $line; $i++; } if (!feof($file)) { exit("Falha inesperada do fgets()"); } fclose($file);
E do mesmo modo se adicionarmos a função de escrita logo depois do loop, vamos inserir o conteúdo no final do arquivo.
<?php $file = fopen("teste.txt", "r+"); if (!$file) { exit("Falha ao abrir o arquivo"); } while (($line = fgets($file)) !== false) { echo $line; } if (!feof($file)) { exit("Falha inesperada do fgets()"); } fwrite($file, "\n\nTeste no fim do arquivo"); fclose($file);
Com isso podemos escrever em qualquer local do arquivo, mas devemos estar atentos ao modo em que o mesmo foi aberto.
Uma observação ao escrever no arquivo utilizei o \n, que indica quebra de linha. Se eu não o utilizasse, o conteúdo seria inserido sem saltar linha junto com o conteúdo original do arquivo.
Um comentário em “Como ler e editar um arquivo utilizando PHP”