]> git.llucax.com Git - z.facultad/75.43/tp1.git/blob - src/lib/file.php
Se agrega función fappendcsv() para agregar un registro al final de un archivo csv.
[z.facultad/75.43/tp1.git] / src / lib / file.php
1 <?php
2 // vim: set binary noeol et sw=4 sts=4 :
3 // Grupo 10
4 //
5 // Lucarella, Schein, Arena
6 //
7 // Creado: Leandro Lucarella (lun may  2 20:00:07 ART 2005)
8 //
9 // $Id$
10
11 if (!function_exists('fputcsv')) {
12     // Función basada en http://www.php.net/manual/en/function.fgetcsv.php
13     function fputcsv($fp, $fields, $delim = ',')
14     {
15         $line = '';
16         $i = 1;
17         foreach ($fields as $field) {
18             // Cambia EOL por los de unix
19             $field = str_replace("\r\n", "\n", $field);
20             // Agrega 'quotes' de ser necesario
21             $d = ($delim == '/') ? '|' : '/';
22             if (preg_match("{$d}[{$delim}\"\n\r]{$d}", $field)) {
23                 $field = '"' . str_replace('"', '""', $field) . '"';
24             }
25             // Prepara la línea a graba
26             $line .= $field . ((count($fields) > $i++) ? $delim : "\n");
27         }
28         // Devuelve lo mismo que fputs()
29         return fputs($fp, $line);
30     }
31 }
32
33 /**
34  * Agrega una entrada al final de un archivo csv.
35  *
36  * @return bool false si hay error.
37  */
38 function fappendcsv($filename, $fields, $delim = ',')
39 {
40     if (($f = fopen($filename, 'a')) === false) return false; // error
41     fputcsv($f, $fields, $delim);
42     fclose($f);
43     return true;
44 }
45
46 /**
47  * Obtiene un archivo csv como array de arrays
48  *
49  * @return array de array (false si hubo error).
50  */
51 function fgetallcsv($filename, $delim = ',')
52 {
53     if (($f = fopen($filename, 'r')) === false) return false;
54     $data = array();
55     while (!feof($f)) $data[] = fgetcsv($f, 4096, $delim);
56     fclose($f);
57     return $data;
58 }
59
60 /**
61  * Obtiene una fila de un archivo cvs buscando según una clave.
62  * Se busca la fila cuyo campo $id coincida con $what.
63  *
64  * @return array fila buscada o false si hubo error o no está.
65  */
66 function fsearchcsv($filename, $what, $id = 0, $delim = ',')
67 {
68     if (($f = fopen($filename, 'r')) === false) return false;
69     while (!feof($f))
70     {
71         $d = fgetcsv($f, 4096);
72         if ($d[$id] == $what)
73         {
74             fclose($f);
75             return $d;
76         }
77     }
78     fclose($f);
79     return false;
80 }
81
82 ?>