En esta ocasión veremos unos ejemplos prácticos de lectura y escritura de ficheros de texto usando PHP. El primer lugar, debemos crear un archivo de texto (con cualquier editor, notepad por ejemplo, aunque también puede valer el bloc de notas de Windows) con algunas líneas de texto.
LECTURA DE FICHEROS
Para leer un archivo de texto línea a línea en PHP vamos a utilizar la función fgets(). Por ejemplo si queremos leer línea por línea el archivo 'archivo.txt' que se encuentra ubicado en la misma carpeta que el archivo 'leer.php', tenemos que escribir en el archivo PHP:
<?php //Ejemplo
$file = fopen("archivo.txt", "r");
while(!feof($file)) {
echo fgets($file). "<br />";
}
fclose($file);
?>
|
Como podemos observar, lo primero que debemos hacer es abrir el fichero 'archivo.txt' y luego ir leyendo línea a línea hasta llegar al final. Recordemos que “r” es el modo de apertura que abre el archivo sólo para lectura. La lectura comienza al inicio del archivo. Después cerramos el fichero.
Con esto conseguiremos mostrar por pantalla el contenido del fichero 'archivo.txt' tal y como podemos ver en la siguiente imagen de ejemplo.
El contenido del fichero de texto “archivo.txt” se supone que era el siguiente:
Prueba de escritura
esto es una linea de texto
esto es una linea de texto
esto es una linea de texto
esto es una linea de texto
esto es una linea de texto
fin de la prueba
|
Lo que hemos hecho con nuestro pequeño programa es ir extrayendo líneas mientras no se detecta el final del fichero (feof). La condición while(!feof($file)) también podría haberse escrito de esta otra manera: while(feof($file)==false), con lo que obtendríamos el mismo resultado.
ESCRITURA DE FICHEROS
Para escribir un archivo de texto en PHP podemos utilizar la función fwrite(). Por ejemplo si queremos escribir línea por línea un archivo 'archivo.txt' que se encuentre ubicado en la misma carpeta que el archivo 'escribir.php', tenemos que escribir en el archivo PHP:
<?php //Ejemplo, archivo escribir.php
$file = fopen("archivo.txt", "w");
fwrite($file, "Esto es una nueva linea de texto" . PHP_EOL);
fwrite($file, "Otra más" . PHP_EOL);
fclose($file);
?>
|
Nota: PHP_EOL (end of line) introduce un salto de línea en PHP. Mediante la concatenación con un punto forzamos el salto de línea después del texto introducido.
Una vez escribimos en nuestro navegador la ruta del fichero escribir.php se ejecuta el código asociado. Después de la ejecución, podemos ver el fichero creado con un editor de texto cualquiera y observaremos el siguiente contenido:
Tener en cuenta que el modo de apertura de archivo que hemos usado es w. Si recordamos el significado de este modo:
w: Abre el archivo sólo para escritura. La escritura comienza al inicio del archivo, y elimina el contenido previo del archivo. Si el archivo no existe, intenta crearlo.
AÑADIR CONTENIDO A UN FICHERO DE TEXTO
A veces no queremos reemplazar el contenido que exista en un fichero de texto, sino añadir un contenido adicional al final de lo que ya exista en el mismo. Vamos a ver cómo podemos hacerlo.
A modo de ejemplo añadiremos unas líneas de texto al final del fichero anteriormente escrito:
<?php //Ejemplo
$file = fopen("archivo.txt", "a");
fwrite($file, "Añadimos línea 1" . PHP_EOL);
fwrite($file, "Añadimos línea 2" . PHP_EOL);
fclose($file);
?>
|
Tener en cuenta que el modo de apertura de archivo que hemos usado es a. Si recordamos el significado de este modo:
a: Abre el archivo para sólo escritura. La escritura comenzará al final del archivo sin eliminar el contenido previo existente. Si el fichero no existe se intenta crear.
Ahora podemos ver el fichero creado con un editor de texto cualquiera y observaremos el siguiente contenido (no se ha reemplazado el contenido existente, sino que se ha ampliado):
Observamos que hemos añadido las dos nuevas líneas al final del archivo.