-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcsvreader
138 lines (119 loc) · 4.74 KB
/
csvreader
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* CSVReader
*
* @package CodeIgniter
* @author André Luiz Morita - [email protected]
* @license open source
* @link https://github.com/andreluizmorita/ci_csvreader.git
* @since Version 1.0
* @filesource
*/
/**
* CSV Reader
*
* @package CodeIgniter
* @subpackage Libraries
* @category CSV Reader
* @author André Luiz Morita - [email protected]
* @link https://github.com/andreluizmorita/ci_csvreader.git
*/
class CSVReader
{
public function __construct()
{
log_message('debug', "Csvreader Class Initialized");
}
/**
* O método generate abre o arquivo reconhece os delimitadores e quebras de linhas
* e retorna um array com os dados organizados conforma a estrutura do csv.
*
* @param string $filePath local onde está o arquivo csv para leitura.
*/
public function generate($filePath, $delimiter_set = NULL)
{
$handle = @fopen($filePath, "r");
if ($handle)
{
$line=fgets($handle, 4096);
fclose($handle);
/*
* Ajusta quebras de linhas para csv gerados no Mac ou Window e reconhece
* qual o separador foi usado para gerar esse csv
*/
if(is_null($delimiter_set))
{
if (count(explode(',', $line))>1) $delimiter = ',';
if (count(explode(';', $line))>1) $delimiter = ';';
}
else
{
$delimiter = $delimiter_set;
}
if (count(explode("\r", $line))>1) $break_line = "\r";
if (count(explode("\n", $line))>1) $break_line = "\n";
if (count(explode("\r\n", $line))>1) $break_line = "\r\n";
$lines = file($filePath);
$content = '';
foreach( $lines as $line_num => $line )
{
$line = htmlentities($line);
/*
*
*/
$line = str_replace('º', '°', $line);
$line = str_replace('&ardm;', 'ª', $line);
/*
* Corrige acentuação
*/
$line = str_replace(array('á'), 'á', $line);
$line = str_replace('Ã', 'Â', $line);
$line = str_replace('ã', 'ã', $line);
$line = str_replace('Á', 'Á', $line);
$line = str_replace('Á', 'Á', $line);
$line = str_replace('â', 'â', $line);
$line = str_replace('Â', 'Â', $line);
$line = str_replace(array('é','é'), 'é', $line);
$line = str_replace('é', 'é', $line);
$line = str_replace('É', 'É', $line);
$line = str_replace('í', 'í', $line);
$line = str_replace('Í', 'Í', $line);
$line = str_replace('ó', 'ó', $line);
$line = str_replace('Ó', 'Ó', $line);
$line = str_replace('ú', 'ú', $line);
$line = str_replace('Ú', 'Ú', $line);
$line = str_replace('ã', 'ã', $line);
$line = str_replace('Ã', 'Ã', $line);
$line = str_replace('õ', 'õ', $line);
$line = str_replace('Õ', 'Õ', $line);
$line = str_replace('Ç', 'Ç', $line);
$line = str_replace('ç', 'ç', $line);
if( $line != '' )
{
$elements = explode($delimiter, $line);
if( !is_array($content) )
{
$elements = str_replace("\r\n", '', $elements);
$elements = str_replace("\n", '', $elements);
$elements = str_replace("\r", '', $elements);
$this->fields = $elements;
$content = array();
}
else
{
$item = array();
foreach( $this->fields as $id => $field )
{
if( isset($elements[$id]) )
{
$item[$field] = $elements[$id];
}
}
$content[] = $item;
}
}
}
return $content;
}
}
}