From: x2003bruneau Date: Tue, 16 Jan 2007 10:27:13 +0000 (+0000) Subject: Use fgetcsv to read a csv line. X-Git-Tag: xorg/0.9.13~125 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=e508a902daf0b64114fcc5b512905bae24fa69a2;p=platal.git Use fgetcsv to read a csv line. This allows string enclosure (machin;"truc;bidule";chouette generates 3 entries: "machin", "truc;bidule" and "chouette") git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@1346 839d8a87-29fc-0310-9880-83ba4fa771e5 --- diff --git a/classes/csvimporter.php b/classes/csvimporter.php index 5f1b4af..da8ed5a 100644 --- a/classes/csvimporter.php +++ b/classes/csvimporter.php @@ -30,7 +30,6 @@ class CSVImporter private $do_sql; private $index; - private $separator; private $data = array(); private $user_functions = array(); @@ -44,9 +43,8 @@ class CSVImporter $this->do_sql = $do_sql; } - private function processLine($line) + private function processLine(array $array) { - $array = explode($this->separator, $line); if (is_null($this->index)) { $this->index = array_map('strtolower', $array); return true; @@ -131,12 +129,16 @@ class CSVImporter public function setCSV($csv, $index = null, $separator = ';') { + require_once dirname(__FILE__) . '/varstream.php'; + VarStream::init(); + global $csv_source; $this->index = null; - $this->separator = $separator; - $csv = preg_split("/(\r\n|\r|\n)/", $csv); + + $csv_source = $csv; + $res = fopen('var://csv_source', 'r'); - foreach ($csv as $line) { - $this->processLine($line); + while (!feof($res)) { + $this->processLine(fgetcsv($res, 0, $separator)); } } @@ -258,7 +260,6 @@ class CSVImporter if (empty($sep)) { $sep = ';'; } - echo $sep; $this->setCSV($csv, null, $sep); } if ($current == 'values' && Env::has('csv_valid')) {