HOWTO · PHP

Como ler um arquivo grande linha por linha em PHP

Este artigo introduz como ler um arquivo grande linha por linha em PHP. Ele inclui a função fgets(), função file() e função stream_get_line().

Nesta página

Neste artigo, vamos introduzir métodos para ler um arquivo grande linha por linha em PHP.

  • Utilizando a função fgets()
  • Utilizando a função file()
  • Utilizando a função stream_get_line()

Utilize fgets() Função para ler um arquivo grande linha por linha em PHP

A função integrada fgets() lê uma linha de um arquivo aberto. Podemos utilizar esta função para ler um arquivo grande linha por linha. A sintaxe correta para utilizar esta função é a seguinte.

fgets($fileName, $lengthOfFile);

A função fgets() tem dois parâmetros. Os detalhes de seus parâmetros são os seguintes

Parâmetros Descrição
$fileName obrigatório É o arquivo que queremos ler linha por linha.
$lengthOfFile opcional Ela especifica o tamanho do arquivo a ser lido. Seu valor padrão é de 1024 bytes.

Esta função retorna uma string de comprimento do arquivo -1 do arquivo especificado pelo usuário, se bem-sucedido. Ela retorna um False em caso de falha.

O programa abaixo mostra como podemos utilizar a função fgets() para ler um arquivo grande linha por linha. Vamos utilizar as funções fopen() e fclose() para abrir e fechar um arquivo respectivamente. Temos um arquivo de texto chamado flowers.txt que contém os detalhes das flores.

<?php 
if ($file = fopen("flowers.txt", "r")) {
    while(!feof($file)) {
        $line = fgets($file);
       echo ("$line");
    }
    fclose($file);
}   
?> 

Temos utilizado a função feof() para ler o arquivo até o final. A saída mostra o conteúdo do arquivo lido linha por linha.

Resultado:

fgets função para ler um arquivo grande linha por linha em PHP

Utilize file() Função para ler um arquivo grande linha por linha em PHP

Em PHP, também podemos utilizar a função file() para ler um arquivo linha por linha. A função file() lê um arquivo em um array linha por linha. A sintaxe correta para utilizar esta função é a seguinte:

file($fileName, $flags, $context)

A função file() aceita três parâmetros. Os detalhes de seus parâmetros são os seguintes

Parâmetros Descrição
$fileName obrigatório É o caminho onde nosso arquivo é armazenado.
$flags opcional Ela especifica as constantes que podemos usar como bandeiras para esta função. Você pode lê-lo aqui.
$context opcional É o recurso que você pode criar usando a função stream_context_create().

O programa que lê o arquivo utilizando a função file() é o seguinte:

<?php 
foreach(file('flowers.txt') as $line) {
   echo $line. "\n";
} 
?> 

Utilize stream_get_line() Função para ler um arquivo grande linha por linha em PHP

Também podemos utilizar a função stream_get_line() para ler um arquivo linha por linha. Esta função lê um arquivo até um delimitador. A sintaxe correta para utilizar esta função é a seguinte:

stream_get_line($handle, $length, $ending)

A função stream_get_line() aceita três parâmetros. Os detalhes de seus parâmetros são os seguintes

Parâmetros Descrição
$handle obrigatório É o caminho onde nosso arquivo é armazenado.
$length obrigatório Ele especifica o tamanho do arquivo a ser lido.
$ending obrigatório É um string que conta sobre o delimitador.

O programa que lê o arquivo utilizando a função stream_get_line() é o seguinte:

<?php 
$file = fopen("flowers.txt", "r+");
while ($line = stream_get_line($file, 1024 * 1024, ".")) {
  echo $line;
}
fclose($file);
?> 

Resultado:

stream_get_line( função para ler um arquivo grande linha por linha em PHP

Nota
O delimitador . é removido da saída.