No PHP podemos abrir um arquivo de texto usando duas funções. Ler um arquivo de texto pode ser útil em várias ocasiões, principalmente quando se usa o php em linha de comando.
Quando falo de arquivos de textos estou falando de arquivos não binários, o que inclui arquivos html, css, xml, sql e vários outros tipos de arquivos humanamente legíveis.
Nesse artigo vou dar exemplos de uso com arquivos de textos, porém você pode abrir qualquer tipo de arquivo com essas funções. Você pode abrir imagens, vídeos, executáveis e etc.
Método 1: file_get_contents
A função file_get_contents serve para abrir arquivos de textos somente para leitura. Ao abrir um arquivo com essa função nós não conseguimos alterar o seu conteúdo. Para abrir um arquivo para edição devemos usar a função fopen combinada com fwrite.
Lendo um arquivo de texto:
<?php
$conteudo = file_get_contents('lista-de-usuarios.txt');
echo $conteudo;
?>
A função file_get_contents retorna todo o conteúdo do arquivo de uma só vez. No caso acima temos todas as linhas do arquivo dentro da variável conteudo. Devemos lembrar que todo conteúdo do arquivo irá para a memória RAM de uma só vez, então devemos evitar abrir arquivos grandes com essa função. Para arquivos grandes o recomendado é fazer a leitura de dados em frações menores, usando a função fread.
Caso você esteja lendo uma lista de dados de um arquivo, e queira obter os dados de cada linha separadamente, você pode converter o conteúdo do arquivo em um array usando a função explode.
<?php
$conteudo = file_get_contents('lista-de-senhas.txt');
$senhas = explode("\n", $conteudo);
foreach ($senhas as $senha) {
echo $senha."\r\n<br>";
}
?>
Acima usamos o carácter de nova linha (\n) como delimitador para separar as linhas do arquivo em uma lista de dados. Dessa forma conseguimos percorrer pelo conteúdo do arquivo usando um array. Vale lembrar que nesse caso a última linha sempre estará vazia, portanto não haverá dados no último índice do array.
Método 2: fopen
Também podemos abrir um arquivo de texto (ou binário) com a função fopen. Essa função retorna um ponteiro para o arquivo aberto, o qual devemos usar em outras funções para conseguirmos ler e editar o arquivo.
Abrindo um arquivo com fopen:
<?php
$fd = fopen('arquivo.txt', 'r');
?>
Na variável fd temos o file descriptor que é um ponteiro que aponta para o arquivo aberto. Vamos passar essa variável para a função fread para fazermos a leitura dos dados desse arquivo.
Lendo um arquivo com fread:
<?php
$fd = fopen('arquivo.txt', 'r');
while ($conteudo = fread($fd, 4096)) {
echo $conteudo;
}
fclose($fd);
?>
A função fread retorna o conteúdo lido ou retorna false caso tenha terminado a leitura do arquivo. Com essa função devemos informar a quantidade de dados a ser obtido do arquivo.
Com fread também podemos ler todo conteúdo do arquivo de uma só vez, mas para isso precisamos saber o tamanho do arquivo. Podemos usar a função filesize para obtermos o tamanho de um arquivo.
<?php
$arquivo = 'arquivo.txt';
$fd = fopen($arquivo, 'r');//abre o arquivo
$conteudo = fread($fd, filesize($arquivo)); //lê o arquivo
echo $conteudo;
fclose($fd);//fecha o arquivo
?>
A função fclose serve para fechar o arquivo. Devemos sempre usar essa função após terminarmos as operações com o arquivo.
Quando usando a função fopen para abertura de arquivos temos a disposição muitas outras funções que podemos utilizar para manipular o arquivo aberto. Nesse artigo vimos apenas o uso das principais funções para a leitura de arquivos.