note 89686 modified in function.fgetcsv by danbrown

From: Date: Sun, 17 May 2009 18:05:45 +0000
Subject: note 89686 modified in function.fgetcsv by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-155059@lists.php.net to get a copy of this message
Here my solution for the \" problem [in CSV files. This function uses fgets(), not fgetcsv().] <?php define("CSV_Start", 0); define("CSV_Quoted", 1); define("CSV_Quoted2", 2); define("CSV_Unquoted", 3); function readCSV($fh, $len, $delimiter = ',', $enclosure = '"') { $data = Array(); $fildNr = 0; $state = CSV_Start; $data[0] = ""; do { $line = fgets($fh, $len); for ($ix = 0; $ix < strlen($line); $ix++) { if ($line[$ix] == $delimiter) { if ($state != CSV_Quoted) { $fildNr++; $data[$fildNr] = ""; $state = CSV_Start; } else { $data[$fildNr] .= $line[$ix]; } } elseif ($line[$ix] == $enclosure) { if ($state == CSV_Start) { $state = CSV_Quoted; } elseif ($state == CSV_Quoted) { $state = CSV_Quoted2; } elseif ($state == CSV_Quoted2) { $data[$fildNr] .= $line[$ix]; $state = CSV_Quoted; } else { $data[$fildNr] .= $line[$ix]; } } else { $data[$fildNr] .= $line[$ix]; if ($state == CSV_Quoted2) { echo "error"; } elseif ($state == CSV_Start) { $state = CSV_Unquoted; } } } } while ($state == CSV_Quoted); return $data; } ?> --was-- Here my solution for the \" problem. <?php define("CSV_Start", 0); define("CSV_Quoted", 1); define("CSV_Quoted2", 2); define("CSV_Unquoted", 3); function readCSV($fh, $len, $delimiter = ',', $enclosure = '"') { $data = Array(); $fildNr = 0; $state = CSV_Start; $data[0] = ""; do { $line = fgets($fh, $len); for ($ix = 0; $ix < strlen($line); $ix++) { if ($line[$ix] == $delimiter) { if ($state != CSV_Quoted) { $fildNr++; $data[$fildNr] = ""; $state = CSV_Start; } else { $data[$fildNr] .= $line[$ix]; } } elseif ($line[$ix] == $enclosure) { if ($state == CSV_Start) { $state = CSV_Quoted; } elseif ($state == CSV_Quoted) { $state = CSV_Quoted2; } elseif ($state == CSV_Quoted2) { $data[$fildNr] .= $line[$ix]; $state = CSV_Quoted; } else { $data[$fildNr] .= $line[$ix]; } } else { $data[$fildNr] .= $line[$ix]; if ($state == CSV_Quoted2) { echo "error"; } elseif ($state == CSV_Start) { $state = CSV_Unquoted; } } } } while ($state == CSV_Quoted); return $data; } ?> http://php.net/manual/en/function.fgetcsv.php

« previous php.notes (#155059) next »