Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- define('FSTA', 'FSTA');
- define('FEND', 'FEND');
- define('FVAL', 'FVAL');
- define('FESC', 'FESC');
- define('FQUO', 'FQUO');
- function parse_csv_row($row) {
- $row = trim($row);
- $vs = array();
- $b = '';
- $st = FSTA;
- for($i=0; $i<strlen($row); $i++) {
- $c = $row[$i];
- switch($st) {
- case FSTA:
- switch($c) {
- case '"':
- $st = FQUO;
- break;
- case ',':
- $vs[] = '';
- break;
- default:
- $b .= $c;
- $st = FVAL;
- break;
- }
- break;
- case FQUO:
- switch($c) {
- case '"':
- $st = FEND;
- break;
- case '\\':
- $st = FESC;
- break;
- default:
- $b .= $c;
- break;
- }
- break;
- case FVAL:
- switch($c) {
- case ',':
- $vs[] = $b;
- $b = '';
- $st = FSTA;
- break;
- default:
- $b .= $c;
- break;
- }
- break;
- case FESC:
- switch($c) {
- case '"':
- $b .= $c;
- break;
- default:
- $b .= '\\';
- $b .= $c;
- break;
- }
- break;
- case FEND:
- switch($c) {
- case ',':
- $vs[] = $b;
- $b = '';
- $st = FSTA;
- break;
- default:
- break;
- }
- break;
- default:
- break;
- }
- }
- if($b) $vs[] = $b;
- return $vs;
- }
- function make_csv_row($arr, $delim=',', $encap='"') {
- $csv_arr = array();
- foreach($arr as $i => $s) {
- if($encap) $s = str_replace($encap, '\\'.$encap, $s);
- $csv_arr[] = (string)$s == '' ? '' : $encap.$s.$encap;
- }
- return implode($delim, $csv_arr);
- }
Add Comment
Please, Sign In to add comment