Problem using fgetcsv()
| From: | Don | Date: | Thu, 06 Jul 2006 16:54:30 +0000 |
| Subject: | Problem using fgetcsv() | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-239179@lists.php.net to get a copy of this message | ||
Hi,
I have a CSV file, comma delimited with the data enclosed by double quotes.
I am using the fgetcsv() function to read and into an array and update a
database. It works great except for the odd record. After investigating, I
have ascertained that it is due to a backslash character in the data which
fgetcsv() cannot parse properly. I don;t see anyway around this using
fgetcsv(). Has anyone written a custom routine for this?
Code Snippet
-------------------
$vvFile = 'myfile.csv';
$fph = fopen($vvFile,"r")
if ($fph) {
while (($data = fgetcsv($fph,4096,',','"')) !== FALSE) {M
// Insert fields from array '$data' to my MySQL database - will fail
on bad data
}
fclose($fph);
}
Sample Data
------------------
"123456","135679048754","7154904875","HD INDOOR INSECT KILR 33 OZ
6","EA"
"654321","246809052607","7154905260","59-2 CACTUS &
SUCCULENTS \","EA"
Note: The first line is OK; the second will fail due to the backslash in the
fourth field
When I print the array contents, here is what I see. For the second line,
it is not parsing the row properly and joining the fourth and fifth fields.
When I edit and remove the backslash, all is OK.
first line:
data[0] = 123456
data[1] = 135679048754
data[2] = 7154904875
data[3] = HD INDOOR INSECT KILR 33 OZ 6
data[4] = EA
second line:
data[0] = 654321
data[1] = 246809052607
data[2] = 7154905260
data[3] = 59-2 CACTUS & SUCCULENTS ",EA
data[4] =