Leer un archivo linea a linea con PHP

En este artículo vamos a ver como leer un archivo linea a linea con PHP. En el caso del ejemplo vamos a leer un archivo .txt pero también serviría para otras extensiones como .php.

Lo primero que tendremos que hacer es abrir el fichero .txt en modo lectura:

$archivo = fopen('file.txt','r');

Seguidamente podemos recorrer las lineas del archivo mediante un bucle:

while ($linea = fgets($archivo)) {
    echo $linea.'<br/>';
    $aux[] = $linea;    
    $numlinea++;
}

En cada iteración de este bucle estamos leyendo una nueva linea del archivo, lo imprimimos por pantalla y lo guardamos en un vector para procesar cada linea después. La variable $numlinea la podemos utilizar para realizar una acción cuando estemos leyendo según que linea.

Ahora no nos olvidemos de cerrar el apuntador al fichero:

fclose($archivo);

Y finalmente, recorremos el array con las lineas del archivo:

echo '<pre>';
print_r($aux);
echo '</pre>';

Ver el ejemplo en funcionamiento

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(9 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

9 respuestas a “Leer un archivo linea a linea con PHP”

  1. Anibal dice:

    Hola
    como puedo cambiar automaticamente el texto que recupero cuando se actualiza el archivo txt?

  2. Martin Hell dice:

    Hola, estoy buscando ayuda para lo sgte:
    en una archivo txt, tengo grupos de 45 lineas separados por 1 linea.
    Cada grupo tiene un id. p.e.
    grupo 1, el id esta en la linea 8.entonces seria 45, linea 8 (45-8) debe leer esas lineas hacia arriba y 37 lineas hacia abajo.
    Donde dicho grupo tiene un formato, esta indentado.
    La idea es capturar todo ello y meterlo en un pdf.

  3. Cesar dice:

    Buenas Tardes Jose Aguilar.

    Tengo un problema didactico , ya tengo parte del codigo que expones y me muestra en pantalla lo que lee de un archivo, mi problema es el siguiente, se requiere enviar datos del contenido de cada linea a una base de datos, no se requiere enviar todo, segun el esquema del banco esta «segmentando» por tamaño de espacio en cada linea, como puedo hacer para separar la cadena de acuerdo a cada segmento, cabe mencionar que no tengo espacios de linea entre los datos.

    SAludos

    • Cesar dice:

      Olvide comentar como es el contenido de cada linea:

      11710050000000002599890015394175010052030082869000010090148716917901 00004001 10

      la secuencia de separacion es 1,6,15,6,6,4,2,7,30,16,16,2,9
      no tengo tabulador, ni pipes, ni comas , ni nada que me separe esa cadena.

      Saludos

      • Jose Aguilar dice:

        Debe haber un separador de linea para poder identificar cada linea. En el ejemplo es sencillo ya que la función fgets() obtiene una linea de forma transparente al programador. Cada linea se identifica con el INTRO. En tu caso quizá tienes que buscar que es lo que separa cada linea. De lo contrario será muy difícil saber en que lineas estás.

    • Jose Aguilar dice:

      Hola buenos días,

      Este script lee linea a linea. En este caso, dentro del while deberás crear una condición con un if(){} para solo guardar en base de datos aquella información que cumpla dicha condición.

      Saludos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ver más sobre