14 - Lectura de un archivo de texto

Para la lectura de un archivo de texto contamos con la función fgets. Además debemos abrir el archivo para lectura.

La apertura para leer:

$ar=fopen("datos.txt","r") or
    die("No se pudo abrir el archivo"); 

Para leer:

$linea=fgets($ar); 

Veamos como mostrar por pantalla el contenido del archivo «datos.txt» creado en el punto anterior:

pagina1.php
<html>
    <head>
        <title>Problema</title>
    </head>
    <body>
        <?php
        $ar = fopen("datos.txt", "r") or
        die("No se pudo abrir el archivo");
        while (!feof($ar)) {
            $linea = fgets($ar);
            $lineasalto = nl2br($linea);
            echo $lineasalto;
        }
        fclose($ar);
        ?>
    </body>
</html> 

Lo primero que debemos identificar es la forma de apertura del archivo:

$ar = fopen("datos.txt", "r") or
    die("No se pudo abrir el archivo"); 

El segundo parámetro de fopen es «r» es decir read (apertura para lectura), si el archivo no existe por ejemplo se ejecuta la función die que finaliza el programa mostrando el string correspondiente.

La función feof retorna true si se ha llegado al final del archivo en caso contrario retorna false. Para que se impriman todas las líneas del archivo se plantea una estructura repetitiva que se ejecuta mientras no se llegue al final de archivo (el operador lógico not en PHP es el caracter !):

  while (!feof($ar)) { 

Dentro de la estructura repetitiva leemos una línea completa del archivo de texto con la función fgets:

$linea = fgets($ar); 

La variable $linea contiene una línea completa del archivo de texto, inclusive el salto de línea (\n)

Como el navegador no hace un salto de línea con este caracter, debemos convertir dicho caracter al elemento
propia de HTML. La función que realiza esta actividad se llama nl2br (new line to br)

El resultado se almacena en una nueva variable que es la que realmente imprimimos:

$lineasalto = nl2br($linea); 
echo $lineasalto;