Uno de esos posts a petición de un lector: ¿cómo leer un fichero de texto con PHP? Bueno, a día de hoy no es una práctica muy usada, tal vez sea algo que suena más a tiempos pasados, pero hace año y pico en un trabajo por ejemplo tuve que hacerlo (y no veáis la lata que daba tratar los datos cuando una tabla de MySQL habría ahorrado muchísimo trabajo, pero eso es otra historia).
Bueno, para leer un fichero debemos usar la función fopen(), pasándole como primer parámetro la dirección del fichero a abrir y como segundo el modo (para lectura r, para escritura w).
Entonces, para leer fopen(«archivo.txt», «r»), y ahora tenemos dos opciones: cargar todo el contenido de golpe o ir leyendo línea a línea.
Para cargar todo el contenido de golpe la cosa sería más o menos así:
function leer_completo($direccion_fichero){ $fichero = fopen ($direccion_fichero, "r"); $contenido = fread($fichero, filesize($direccion_fichero)); return $contenido; }
Esto devolvería una variable con todo el contenido del fichero. Para la lectura línea a línea en cambio necesitaremos un bucle y la función fgets() en lugar de fread().
<?php $gestor = @fopen("/tmp/inputfile.txt", "r"); if ($gestor) { while (($búfer = fgets($gestor, 4096)) !== false) { echo $búfer; } if (!feof($gestor)) { echo "Error: fallo inesperado de fgets()\n"; } fclose($gestor); } ?>
En este caso ya os pego el ejemplo que aparece en la web oficial de php. En ese caso se especifica a fgets() el parámetro del tamaño a leer. Y es que puedes especificarle el tamaño de bloque que debe hacer en cada lectura o, por el contrario, no pasarle ningún parámetro y que lea hasta el final de línea. Esto último puede dar problemas con archivos creados en un Mac, pero se puede solventar activando la opcion en tiempo de ejecución auto_detect_line_endings.
Otro día, si queréis, hablamos de csv, o de escritura… estoy abierto a sugerencias.
Genial, no pensé que fuese tan enrevesado.
En cuanto a las sugerencias CSV me vendría de perlas!
Saludote!
Ok, mañana si la resaca lo permite me lo curro