Leer archivos de texto usando PHP

Anteriormente había escrito como Crear TXT con PHP, pero veo que me falto comentar algunos detalles importantes, así que voy a completar el anterior mini-tutorial, explicando como leer archivos de texto usando PHP.

Cuando usamos la función fopen debemos especificar en el segundo parámetro (pasándolo como string) la razón por la que queremos usar el archivo en concreto, ya sea para lectura o escritura. Me explico, anteriormente para la creación de archivos había usado:

$archivo = fopen ("muriba.txt", "w+");

Lo que hace w+ es tomar el archivo muriba.txt y hace una apertura para lectura y escritura. Si el archivo no existe el intentara crearlo, pero deben darle permiso de escritura, de lo contrario PHP arrojara un error. Si el archivo de texto ya posee una información, este será reemplazado totalmente, así que no es recomendable usar w+ si más adelante queremos añadir texto sin que el anterior se borre. Para poder escribir en un archivo sin afectar el contenido del mismo es recomendable usar el modo a. Para entender un poco mejor esto, tienen a su disposición una tabla con cada uno de los modos que pueden ser usados con fopen:

Funcion fopen
modODescripción
‘r’Apertura para sólo lectura; coloca el puntero al archivo al principio del archivo.
‘r+’Apertura para lectura y escritura; coloca el puntero al archivo al principio del archivo.
‘w’Apertura para sólo escritura; coloca el puntero al archivo al principio del archivo y trunca el archivo a longitud cero. Si el archivo no existe se intenta crear.
‘w+’Apertura para lectura y escritura; coloca el puntero al archivo al principio del archivo y trunca el archivo a longitud cero. Si el archivo no existe se intenta crear.
‘a’Apertura para sólo escritura; coloca el puntero al archivo al final del archivo. Si el archivo no existe se intenta crear.
‘a+’Apertura para lectura y escritura; coloca el puntero al archivo al final del archivo. Si el archivo no existe se intenta crear.
‘x’Creación y apertura para sólo escritura; coloca el puntero al archivo al principio del archivo. Si el archivo ya existe, la llamada a fopen() fallará devolviendo FALSE y generando un error de nivel E_WARNING. Si el archivo no exite se intenta crear. Esto es equivalente a especificar las banderas O_EXCL|O_CREAT para la llamada al sistema open(2) subyacente.
‘x+’Creación y apertura para lectura y escritura; coloca el puntero al archivo al principio del archivo. Si el archivo ya existe, la llamada a fopen() fallará devolviendo FALSE y generando un error de nivel E_WARNING. Si el archivo no existe se intenta crear. Esto es equivalente a especificar las banderas O_EXCL|O_CREAT para la llamada al sistema open(2) subyacente.

Teniendo claro cómo funciona fopen, podemos pasar a la lectura de archivos. Para leer los archivos usaremos el modo r en fopen, PHP cuenta con varias funciones para esto, así que mostraré algunas para no extender tanto el tutorial:

Fgets:

<?php
$file= fopen("muriba.txt", "r");
while(!feof($file)){
$mostrar=fgets ($file, 100);
echo $mostrar."<br />";
}
fclose($file);
?>

Explico un poco el código:

$mostrar=fgets ($file, 100);

Usamos fgets, pasándole la ruta del archivo a leer que esta almacenada en la variable $file. El segundo parámetro en este caso 100 el cual es opcional, debe ser un número entero, para especificar el número de bytes que queremos que se lean. Posiblemente la parte de código en el que tengan dudas es:

while(!feof($file))

Usamos el loop while para recorrer el archivo con la ayuda de la función feof, que comprueba si un archivo que se esta leyendo a llegado a su final.  Lo que quiere decir esto es que mientras no llegue al final del archivo (!feof) imprima lo que hay en el.

Otra función muy útil es fgetss, que hace lo mismo que fgets solo que al leer el archivo elimina cualquier código HTML o PHP. Muy útil en cuestiones de seguridad. Esta función posee un tercer parámetro, en el que podemos especificar las etiquetas que NO queremos que elimine:

<?php
$file= fopen("muriba.txt", "r");
while(!feof($file)){
$mostrar=fgetss ($file, 100, "<strong>");
echo $mostrar.<br />";
}
fclose($file);
?>

Pueden buscar como funcionan otras funciones para leer archivos como fread, file, file_get_contents, fgetc, fpassthru, rewind.

  3 Comentarios

  1. victor   •  

    como hago para que me abra un archivo? me explico que no aparezca predefinido…

    por ejemplo que lo cargue desde una caja de texto?

  2. phsilver   •  

    Hola…
    No me muestra el contenido del txt… por que podra ser?

    El txt se puede formatear con estilos para darle un aspecto de tabla??
    Gracias.

  3. Susan   •  

    Hola Brian ojala puedas ayudarme y gracias por la funcion la entiendo mejor bueno quiero saber si esta funcion me sirve para el sgte texto es un archivo el cual necesito leerlo y solo obtener algunos valores por favor si sabes algo ayudame escribeme a mi correo [email protected]: …

Deja un comentario

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