Richard, > I am parsing a csv file with fgetcsv and the fields are surrounding by > double quotes, now I am running into a problem periodically that when there > are quotes within the value it is treating it like another value instead of > the same value. > Any ideas on how to get around that? > > I am thinking I might have to convert all quotes to " and then turn all > "," back into quotes and then the first " in the file and > then last one since obviously they will not have a comma in between them. > This seems like a while lot of work.. > Ideas?
The first idea is that the system that outputs a .CSV with quotes within a quoted field is broken big-time and that's the part that needs fixing! I'm on the same wavelength as you describe: you can't use any automated csv function on such a file. Quotes <<should>> only appear in pairs. The closing quote must therefore appear immediately prior to a field separator (eg comma) - whitespace not withstanding, unless it is the last field on a line, in which case it will appear immediately prior to a record separator. One possibility is to write a 'filter' script to do this - and thus leave your existing code intact. The filter could take in the file, explode on quotes, and then cycle through the resultant array looking at the first non-whitespace data in every second element, clean/recode where necessary, and then implode and output. Alternatively could join/unset consecutive array elements which have been split inappropriately (by 'internal' quotes), and then implode using the other style of quotes/another separator, if this can be made to work later in the process... What a palaver! =dn -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php