En este post te voy a mostrar a escribir o guardar datos en un archivo de texto usando PHP.
Veremos dos maneras de escribir a un archivo de texto: usando file_put_contents y combinando las funciones de fopen, fwrite y fclose.
También veremos cómo adjuntar o remplazar el contenido del archivo al guardar.
Aunque algunos archivos de texto tienen la extensión txt, pueden existir otros del mismo tipo con diferente extensión (por ejemplo, un ini) o incluso sin extensión; pero lo que realmente importa es el contenido.
Nota: en artículos anteriores te enseñé a leer archivos de texto con PHP.
Comencemos viendo cómo escribir una simple cadena dentro de un archivo. Se obtiene un gestor del archivo con fopen
; se escribe con fwrite
(primer argumento es el gestor, el segundo son los datos) y finalmente se cierra el archivo con fclose
.
<?php
// https://parzibyte.me/blog
$nombreArchivo = "hola.txt";
$archivo = fopen($nombreArchivo, "w");
fwrite($archivo, "Hola mundo. Parzibyte.me");
fclose($archivo);
En este caso el archivo fue creado (si ya existiera no pasa nada malo) y sobrescrito.
La función fopen
recibe el nombre del archivo y el modo de apertura como segundo argumento.
El modo a
abre el archivo para escritura, y no sobrescribe el contenido, sino que lo adjunta al existente.
En cambio, el modo w
abre el archivo para escritura y sobrescribe el contenido ya existente.
Existen otros modos de apertura.
Veamos cómo escribir a un archivo de texto con PHP pero sin sobrescribir los datos ya existentes:
<?php
// https://parzibyte.me/blog
$nombreArchivo = "hola.txt";
$archivo = fopen($nombreArchivo, "a");
fwrite($archivo, "Hola mundo. Parzibyte.me");
fclose($archivo);
En este caso estamos abriendo el archivo en modo a
.
Nota: si quieres agregar nuevas líneas, simplemente concatena el mensaje con PHP_EOL
o con un \n
.
Veamos otro ejemplo en donde llamamos a fwrite
varias veces.
<?php
// https://parzibyte.me/blog/
$nombreArchivo = "nombres.txt";
$archivo = fopen($nombreArchivo, "w");
$nombres = array(
"Luis",
"María José",
"Maggie",
"Panqué",
"Julio Verne",
);
foreach ($nombres as $nombre) {
fwrite($archivo, $nombre . PHP_EOL);
}
fclose($archivo);
Una función muy útil a la hora de querer escribir datos en un archivo con PHP es file_put_contents,
que es como combinar fopen
, fwrite
y fclose.
La sintaxis es:
file_put_contents($nombreDeArchivo, $datos, $banderas, $gestor);
Los últimos dos argumentos son opcionales.
Las banderas son unas constantes que veremos en el siguiente ejemplo; y el gestor es un posible gestor obtenido con fopen
en caso de que lo tengamos.
Veamos un ejemplo:
<?php
// https://parzibyte.me/blog
$nombreArchivo = "direccion.txt";
$datos = "New New York #456";
file_put_contents($nombreArchivo, $datos);
Esta función es más corta y sencilla de usar.
Por cierto, así como lo estamos usando, el contenido del archivo será sobrescrito.
¿Recuerdas las banderas? bueno, existe una que se llama FILE_APPEND
y sirve para adjuntar los datos en lugar de sobrescribirlos.
Modifiquemos nuestro ejemplo:
<?php
// https://parzibyte.me/blog
$nombreArchivo = "direccion.txt";
$datos = "New New York #456";
file_put_contents($nombreArchivo, $datos, FILE_APPEND);
Como ves, le estoy pasando la bandera de FILE_APPEND
en el tercer argumento. Ahora los datos serán adjuntados.
Recuerda que si quieres separarlos por líneas puedes usar PHP_EOL
o un salto de línea con \n
.
Hay otras dos banderas para la función de file_put_contents
:
FILE_USE_INCLUDE_PATH:
Buscar el archivo en la ruta de includes, es decir, si no se encuentra en la misma ruta del script (y no se especifica la ruta absoluta) entonces se busca en la include path de php.LOCK_EX:
obtener un acceso exclusivo, es decir, no dejar que nadie más pueda modificar el archivo al mismo tiempo que nosotros.Para pasarlas a todas usa el operador OR. Por ejemplo:
file_put_contents($archivo, $datos, FILE_APPEND | LOCK_EX);
Con estas dos funciones podemos escribir archivos en PHP. Recomiendo el uso de file_put_contents
para cuando es una escritura rápida, pero si se trata de miles de datos o datos en un ciclo es mejor usar fwrite
.
Aquí dejo un enlace
al manual de PHP.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.