Herramientas de usuario

Herramientas del sitio


informatica:programacion:php:snippets:ficheros

PHP Snippets: Ficheros

Contar líneas

Para contar las líneas de un fichero de texto:

$file = new \SplFileObject('file.extension', 'r');
$file->seek(PHP_INT_MAX);
 
echo $file->key(); // Número de líneas

CSV

Escritura

En el siguiente ejemplo se utiliza la función fputcsv:

$fichero = __DIR__ . DIRECTORY_SEPARATOR . "mi_fichero.csv";
$fp = fopen($fichero, "w");
 
$cabecera = [
    "columna1",
    "columna2",
    "columna3"
];
 
fputcsv($fp, $cabecera );
 
$registro = [
    "valor1",
    "valor2",
    "valor3"
];
 
fputcsv($fp, $registro);
 
fclose($fp);

El fichero resultante tendrá los campos separados por ,, utiliza las comillas como cierre de campos con espacios. Ejemplo:

campo1, campo2, campo3
Pepito, "Rodríguez Pérez", 18
Manolito, "Gafotas Verdes", 1
"José Fernando", Suárez, 30

Lectura

$fichero = __DIR__ . DIRECTORY_SEPARATOR . "mi_fichero.csv";
$fp = fopen($fichero, "r");
 
while (($fila = fgetcsv($fp, 1000, $delimitador)) !== false) {
    $datos[] = $fila;
}

Si queremos saltarnos la primera línea (porque contiene la cabcera con los títulos, por ejemplo), basta con obtener la primera línea del fichero y no hacer nada:

// código
fgetcsv($file, 10000, ",");
while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE) {
    // código
}

Si queremos evitar las líneas en blanco:

$fichero = __DIR__ . DIRECTORY_SEPARATOR . "mi_fichero.csv";
$fp = fopen($fichero, "w");
 
while (($fila = fgetcsv($fp, 1000, $delimitador)) !== false) {
    // Ignoramos las líneas vacías
    if (array(null) !== $fila) { 
        $datos[] = $fila;
    }
}

Recursos

informatica/programacion/php/snippets/ficheros.txt · Última modificación: por tempwin