Escritura de archivos en PHP

Para la escritura de archivos en PHP existen diferentes formas y funciones, vamos a analizar algunas

Contenido modificable

Si ves errores o quieres modificar/añadir contenidos, puedes crear un pull request. Gracias

Funciones básicas para la escritura de archivos en PHP

1. fwrite 3. fputcsv
2. file_put_contents

1. fwrite

int fwrite (resource $handle, string $string, [, int $length ])

Escribe el contenido de $string en el recurso $handle. Si se facilita una longitud $length se escribirá hasta ésta o hasta que acabe $string.

Devuelve el número de bytes escritos.

$fp = fopen("miarchivo.txt", "w");

fwrite($fp, "Hola que tal");
fwrite($fp, ", ¿Cómo estás? \n");

fclose($fp);
// Escribirá en miarchivo.txt : Hola que tal, ¿Cómo estás?

En el ejemplo anterior hemos escrito en el archivo de forma que hemos sobreescrito lo anterior (con el modo w). Si ahora queremos añadir nuevo contenido al archivo, podemos abrir un recurso con el modo a de append:

if ($fp = fopen("miarchivo.txt", "a")){
    fwrite($fp, "Yo muy bien, ¿Y tú?");
}
fclose($fp);

La función fputs() es un alias de fwrite().

2. file_put_contents

int file_put_contents (string $filename, mixed $data [, int $flags = 0 [, resource $context ]] )

Escribe información $data en un archivo $filename. Viene a ser equivalente a hacer fopen(), fwrite() y fclose() a la vez. Si el archivo $filename no existe, se crea, a no ser que la bandera FILE_APPEND esté establecida. Las banderas pueden ser:

FILE_USE_INCLUDE_PATH. Busca $filename en el directorio _includepath.

FILE_APPEND. Si el archivo $filename ya existe, añade la información en el mismo en lugar de sobreescribirlo.

LOCK_EX. Adquiere acceso exclusivo mientras se ejecuta la escritura. Es como llamar a flock() entre la llamada a fopen() y fwrite().

La función devuelve el número de bytes escritos en el archivo $filename.

// Uso junto con file_get_contents y añadiendo al ya existente:
$archivo = "miarchivo.txt";
$actual = file_get_contents($archivo);
$actual .= "Esto añade más texto al archivo\n";
file_put_contents($archivo, $actual);
// Podemos utilizar también la bandera FILE_APPEND para añadir al final sin eliminar:
$archivo = "miarchivo.txt";
$mascontenido = "¡Todavía más contenido!\n";
// También vamos a emplear la bandera LOCK_EX para evitar cualquier modificación mientras:
file_put_contents($archivo, $mascontenido, FILE_APPEND | LOCK_EX);

3. fputcsv

int fputcsv (resource_ $handle, array $fields [, string $delimeter = "," [, string $enclosure = '"' [ , string $escape_char = "\" ]]] )

Escribe en formato csv en un archivo abierto $handle desde un array $fields.

Se puede especificar, opcionalmente, el delimitador de campos $delimeter, un carácter circundante de cada campo $enclosure y un parámetro de escape _$escapechar.

Devuelve la longitud del string escrito en cado de éxito o false en caso de error.

$animales = array (
    array ('tortuga', 'Nicole', '5'),
    array ('perro', 'Chukie', '10'),
    array ('gato', 'Whiskie', 8)
);
$fp = fopen('archivo.csv', 'w');
foreach ($animales as $row){
    fputcsv($fp, $row);
}
fclose($fp);