note 98243 added to function.str-getcsv

From: Date: Thu, 03 Jun 2010 17:13:10 +0000
Subject: note 98243 added to function.str-getcsv
Groups: php.notes 
Request: Send a blank email to php-notes+get-169862@lists.php.net to get a copy of this message
Good afternoon, fixed another bug I found in the function. Using empty() to evaluate values that can return 0, can have its pitfalls. 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 (($pos_delimiter === false) && ($pos_enclosure_start === false)) { $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/98243 Del: integrated -- https://master.php.net/note/delete/98243/integrated Del: useless -- https://master.php.net/note/delete/98243/useless Del: bad code -- https://master.php.net/note/delete/98243/bad+code Del: spam -- https://master.php.net/note/delete/98243/spam Del: non-english -- https://master.php.net/note/delete/98243/non-english Del: in docs -- https://master.php.net/note/delete/98243/in+docs Del: other reasons-- https://master.php.net/note/delete/98243 Reject -- https://master.php.net/note/reject/98243 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#169862) next »