]> git.llucax.com Git - z.facultad/75.43/tp1.git/blob - src/lib/file.php
Se agregan 2 funciones muy útiles para manejar archivos CSV: fgetallcsv() obtiene...
[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  * Obtiene un archivo csv como array de arrays
35  *
36  * @return array de array (false si hubo error).
37  */
38 function fgetallcsv($filename, $delim = ',')
39 {
40     if (($f = fopen($filename, 'r')) === false) return false;
41     $data = array();
42     while (!feof($f)) $data[] = fgetcsv($f, 4096, $delim);
43     fclose($f);
44     return $data;
45 }
46
47 /**
48  * Obtiene una fila de un archivo cvs buscando según una clave.
49  * Se busca la fila cuyo campo $id coincida con $what.
50  *
51  * @return array fila buscada o false si hubo error o no está.
52  */
53 function fsearchcsv($filename, $what, $id = 0, $delim = ',')
54 {
55     if (($f = fopen($filename, 'r')) === false) return false;
56     while (!feof($f))
57     {
58         $d = fgetcsv($f, 4096);
59         if ($d[$id] == $what)
60         {
61             fclose($f);
62             return $d;
63         }
64     }
65     fclose($f);
66     return false;
67 }
68
69 ?>