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

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:php:snippets:ficheros [2020/12/28 08:58] – [Escritura] 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 ====
Línea 8: Línea 21:
  
 <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 = [ $cabecera = [
-    columna1, +    "columna1"
-    columna2, +    "columna2"
-    columna3+    "columna3"
 ]; ];
  
Línea 30: Línea 43:
 </code> </code>
  
-El fichero resultante tendrá los campos separados por '','', utiliza las comillas como cierre de campos con espacios. Ejemplo:<+El fichero resultante tendrá los campos separados por '','', utiliza las comillas como cierre de campos con espacios. Ejemplo:
  
 <code> <code>
Línea 39: Línea 52:
 </code> </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 ===== ===== Recursos =====
  
   * [[https://gist.github.com/janschoepke/3e7a3639546d0d740c023e11289cf13d|Exportación a CSV desde MySQL]]   * [[https://gist.github.com/janschoepke/3e7a3639546d0d740c023e11289cf13d|Exportación a CSV desde MySQL]]
informatica/programacion/php/snippets/ficheros.1609142312.txt.gz · Última modificación: por tempwin