Version: 1.0
Type: Function
Category: Databases
License: GNU General Public License
Description: If you want to get the different arguments out of a comma seperated value line then this snippet is your right choice. it understands quoted arguments and escaped quotes.
<? function parseCSVline($line) { unset($arr); $quote= ""; $quoteflag= 0; $backslash= 0; $itemindex= 0; unset($item); for ($i= 0; $i < strlen($line); $i++) { $c= $line{$i}; if ($c == "") { $backslash= 1-$backslash; if ($backslash == 0) $item.= $c; } else { if ($c == """ or $c == "'") { if($backslash == 0) { if ($item == "" and $quoteflag == 0) { $quote= $c; $quoteflag= 1; } else { if ($c == $quote) { if ($quoteflag == 0) { print_r($arr); return "parse error at position ".$i.": quote not expectedn"; } $quoteflag= 0; } else $item.= $c; } } else $item.= $c; $backslash= 0; } else { if ($c == ",") { if ($backslash == 0) { if ($quoteflag == 1) { $item.= $c; } else { $arr[]= $item; unset($item); } } else $item.= $c; $backslash= 0; } else { $item.= $c; // sommige backslash-dingen moeten gebackslasht blijven, bv. t misschien, maar goed, andere keer $backslash= 0; } } } $itemindex++; } if ($quoteflag == 1) return "parse error at position ".$i.": quote expectedn"; if ($backslash == 1) return "parse error at position ".$i.": backslash expectedn"; $arr[]= $item; return $arr; } ?>