note 105209 added to function.str-getcsv
| From: | w_barath at hotmail | Date: | Wed, 03 Aug 2011 02:19:28 +0000 |
| Subject: | note 105209 added to function.str-getcsv | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-182127@lists.php.net to get a copy of this message | ||
For people who haven't got access to str_getcsv() in their version of PHP and want to convert
strings from CSV, I have seen many huge swaths of code and regexes to do this extremely simple task.
Here's minimal, fast code:
function
csv2array($input,$delimiter=',',$enclosure='"',$escape='\\'){
$fields=explode($enclosure.$delimiter.$enclosure,substr($input,1,-1));
foreach ($fields as $key=>$value)
$fields[$key]=str_replace($escape.$enclosure,$enclosure,$value);
return($fields);
}
function
array2csv($input,$delimiter=',',$enclosure='"',$escape='\\'){
foreach ($input as $key=>$value)
$input[$key]=str_replace($enclosure,$escape.$enclosure,$value);
return $enclosure.implode($enclosure.$delimiter.$enclosure,$input).$enclosure;
}
$data=array("one","\"two\"");
for ($i=0;$i<100;$i++) $data=array(array2csv($data),$i);
echo "Encoded $i times...".var_export($data,true)."\n";
for ($j=0;$j<$i;$j++) $data=csv2array($data[0]);
echo "Decoded $i times...".var_export($data,true)."\n";
Pretty straightforward. ;-)
Yes, I intentionally changed the function names,
----
Server IP: 69.147.83.197
Probable Submitter: 96.50.58.182
----
Manual Page -- http://www.php.net/manual/en/function.str-getcsv.php
Edit -- https://master.php.net/note/edit/105209
Del: integrated -- https://master.php.net/note/delete/105209/integrated
Del: useless -- https://master.php.net/note/delete/105209/useless
Del: bad code -- https://master.php.net/note/delete/105209/bad+code
Del: spam -- https://master.php.net/note/delete/105209/spam
Del: non-english -- https://master.php.net/note/delete/105209/non-english
Del: in docs -- https://master.php.net/note/delete/105209/in+docs
Del: other reasons-- https://master.php.net/note/delete/105209
Reject -- https://master.php.net/note/reject/105209
Search -- https://master.php.net/manage/user-notes.php