php

Escribir archivo de texto con PHP

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.

Escribir fichero de PHP con fwrite

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.

Sintaxis de fopen

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.

Escribir archivo adjuntando datos

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.

Otro ejemplo de fwrite

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);

Función file_put_contents

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.

Usar file_put_contents para adjuntar contenido

¿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.

Más banderas

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);

Conclusión

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

17 horas hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

1 semana hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

1 semana hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

1 semana hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

1 semana hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

1 semana hace

Esta web usa cookies.