Skip to content

Instantly share code, notes, and snippets.

@taichunmin
Created June 4, 2014 18:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save taichunmin/2b970380a3a67cb1bd9e to your computer and use it in GitHub Desktop.
Save taichunmin/2b970380a3a67cb1bd9e to your computer and use it in GitHub Desktop.
<?php
function tai_csvFixDbquotes( $csv, $delimiter = ',', $enclosure = '"' )
{
$res = '';
if( $csv[ strlen($csv)-1 ] == "\r" )
$csv = substr($csv,0,-1);
$inDbquotes = false;
if( strlen($csv)==0 || $csv[0] != $enclosure )
$res .= $enclosure;
for( $i=0; $i<strlen($csv); $i++ )
{
if( $csv[$i] == $enclosure )
$inDbquotes = !$inDbquotes;
if( $csv[$i] == $delimiter && !$inDbquotes )
{
if( $i-1<0 || $csv[$i-1] != $enclosure )
$res .= $enclosure;
$res .= $delimiter;
if( $i+1 >= strlen($csv) || $csv[$i+1] != $enclosure )
$res .= $enclosure;
}
else $res .= $csv[$i];
}
if( strlen($csv)==0 || $csv[strlen($csv)-1] != $enclosure )
$res .= $enclosure;
return $res;
}
/*
echo tai_csvFixDbquotes('測試,測試').'<br />';
echo tai_csvFixDbquotes('"測試","測試"').'<br />';
echo tai_csvFixDbquotes('"測試",測試,"測試"').'<br />';
echo tai_csvFixDbquotes('測試測試').'<br />';
echo tai_csvFixDbquotes('123,456').'<br />';
echo tai_csvFixDbquotes('').'<br />';
*/
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment