note 98088 added to function.str-getcsv

From: Date: Tue, 25 May 2010 16:50:49 +0000
Subject: note 98088 added to function.str-getcsv
Groups: php.notes 
Request: Send a blank email to php-notes+get-169589@lists.php.net to get a copy of this message
Here is my (fully tested) implementation of str_getcsv for PHP < 5.3 that I submitted on a previous post. Hope someone finds it useful. if (!function_exists('str_getcsv')) { function str_getcsv($input, $delimiter = ',', $enclosure = '"', $escape = '\\', $eol = '\n') { if (is_string($input) && !empty($input)) { $output = array(); $tmp = preg_split("/".$eol."/",$input); if (is_array($tmp) && !empty($tmp)) { while (list($line_num, $line) = each($tmp)) { if (preg_match("/".$escape.$enclosure."/",$line)) { while ($strlen = strlen($line)) { $pos_delimiter = strpos($line,$delimiter); $pos_enclosure_start = strpos($line,$enclosure); if ( is_int($pos_delimiter) && is_int($pos_enclosure_start) && ($pos_enclosure_start < $pos_delimiter) ) { $enclosed_str = substr($line,1); $pos_enclosure_end = strpos($enclosed_str,$enclosure); $enclosed_str = substr($enclosed_str,0,$pos_enclosure_end); $output[$line_num][] = $enclosed_str; $offset = $pos_enclosure_end+3; } else { if (empty($pos_delimiter) && empty($pos_enclosure_start)) { $output[$line_num][] = substr($line,0); $offset = strlen($line); } else { $output[$line_num][] = substr($line,0,$pos_delimiter); $offset = ( !empty($pos_enclosure_start) && ($pos_enclosure_start < $pos_delimiter) ) ?$pos_enclosure_start :$pos_delimiter+1; } } $line = substr($line,$offset); } } else { $line = preg_split("/".$delimiter."/",$line); /* * Validating against pesky extra line breaks creating false rows. */ if (is_array($line) && !empty($line[0])) { $output[$line_num] = $line; } } } return $output; } else { return false; } } else { return false; } } } ---- Server IP: 208.69.120.55 Probable Submitter: 200.46.95.226 ---- Manual Page -- http://www.php.net/manual/en/function.str-getcsv.php Edit -- https://master.php.net/note/edit/98088 Del: integrated -- https://master.php.net/note/delete/98088/integrated Del: useless -- https://master.php.net/note/delete/98088/useless Del: bad code -- https://master.php.net/note/delete/98088/bad+code Del: spam -- https://master.php.net/note/delete/98088/spam Del: non-english -- https://master.php.net/note/delete/98088/non-english Del: in docs -- https://master.php.net/note/delete/98088/in+docs Del: other reasons-- https://master.php.net/note/delete/98088 Reject -- https://master.php.net/note/reject/98088 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#169589) next »