Herramientas de usuario

Herramientas del sitio


informatica:programacion:php:snippets:ficheros

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
informatica:programacion:php:snippets:ficheros [2020/08/05 12:27] – creado tempwininformatica:programacion:php:snippets:ficheros [2022/12/26 16:32] (actual) tempwin
Línea 1: Línea 1:
 ====== PHP Snippets: Ficheros ====== ====== PHP Snippets: Ficheros ======
 +
 +===== Contar líneas =====
 +
 +Para contar las líneas de un fichero de texto:
 +
 +<code php>
 +$file = new \SplFileObject('file.extension', 'r');
 +$file->seek(PHP_INT_MAX);
 +
 +echo $file->key(); // Número de líneas
 +</code>
  
 ===== CSV ===== ===== CSV =====
 +
 +  * [[https://datatracker.ietf.org/doc/html/rfc4180|RFC4180: especificación del formato CSV]]
  
 ==== Escritura ==== ==== Escritura ====
  
-En el siguiente ejemplo se utiliza la función [[https://www.php.net/manual/es/function.fputcsv.php|fputcsv]];+En el siguiente ejemplo se utiliza la función [[https://www.php.net/manual/es/function.fputcsv.php|fputcsv]]:
  
 <code php> <code php>
-$fichero = __DIR__ . DIRECTORY_SEPARATOR . "procesos_voa_empresa.csv";+$fichero = __DIR__ . DIRECTORY_SEPARATOR . "mi_fichero.csv";
 $fp = fopen($fichero, "w"); $fp = fopen($fichero, "w");
 +
 +$cabecera = [
 +    "columna1",
 +    "columna2",
 +    "columna3"
 +];
 +
 +fputcsv($fp, $cabecera );
  
 $registro = [ $registro = [
-    "campo1", +    "valor1", 
-    "campo2", +    "valor2", 
-    "campo3+    "valor3"
 ]; ];
  
Línea 21: Línea 42:
 fclose($fp); fclose($fp);
 </code> </code>
 +
 +El fichero resultante tendrá los campos separados por '','', utiliza las comillas como cierre de campos con espacios. Ejemplo:
 +
 +<code>
 +campo1, campo2, campo3
 +Pepito, "Rodríguez Pérez", 18
 +Manolito, "Gafotas Verdes", 1
 +"José Fernando", Suárez, 30
 +</code>
 +
 +==== Lectura ====
 +
 +<code php>
 +$fichero = __DIR__ . DIRECTORY_SEPARATOR . "mi_fichero.csv";
 +$fp = fopen($fichero, "r");
 +
 +while (($fila = fgetcsv($fp, 1000, $delimitador)) !== false) {
 +    $datos[] = $fila;
 +}
 +</code>
 +
 +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:
 +
 +<code php>
 +// código
 +fgetcsv($file, 10000, ",");
 +while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE) {
 +    // código
 +}
 +</code>
 +
 +Si queremos evitar las líneas en blanco:
 +
 +<code php>
 +$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;
 +    }
 +}
 +</code>
 +===== Recursos =====
 +
 +  * [[https://gist.github.com/janschoepke/3e7a3639546d0d740c023e11289cf13d|Exportación a CSV desde MySQL]]
informatica/programacion/php/snippets/ficheros.1596623243.txt.gz · Última modificación: por tempwin