DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
CSV Parser / Writer For PHP
CSV Parser / Writer
Example A:
//cell separator, row separator, value enclosure
$csv = new CSV(';', "\r\n", '"');
//parse the string content
$csv->setContent(file_get_contents('data.csv'));
//returns an array with the CSV data
print_r($csv->getArray());
Exemple B:
$csv = new CSV(';', "\r\n", '"');
//sets up the content through an array
$csv->setArray(
array(
array('col"una1', "colu\r\nna2"),
array('col;una3', 'coluna4')
)
);
//retorns string with the CSV representation
print $csv->getContent();
<?php
//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com
class CSV{
var $cellDelimiter;
var $valueEnclosure;
var $rowDelimiter;
function CSV($cellDelimiter, $rowDelimiter, $valueEnclosure){
$this->cellDelimiter = $cellDelimiter;
$this->valueEnclosure = $valueEnclosure;
$this->rowDelimiter = $rowDelimiter;
$this->o = array();
}
function getArray(){
return $this->o;
}
function setArray($o){
$this->o = $o;
}
function getContent(){
if(!(($bl = strlen($b = $this->rowDelimiter)) && ($dl = strlen($d = $this->cellDelimiter)) && ($ql = strlen($q = $this->valueEnclosure))))
return '';
for($o = $this->o, $i = -1; ++$i < count($o);){
for($e = 0, $j = -1; ++$j < count($o[$i]);)
(($e = strpos($o[$i][$j], $q) !== false) || strpos($o[$i][$j], $b) !== false || strpos($o[$i][$j], $d) !== false)
&& $o[$i][$j] = $q . ($e ? str_replace($q, $q . $q, $o[$i][$j]) : $o[$i][$j]) . $q;
$o[$i] = implode($d, $o[$i]);
}
return implode($b, $o);
}
function setContent($s){
$this->o = array();
if(!strlen($s))
return true;
if(!(($bl = strlen($b = $this->rowDelimiter)) && ($dl = strlen($d = $this->cellDelimiter)) && ($ql = strlen($q = $this->valueEnclosure))))
return false;
for($o = array(array('')), $this->o = &$o, $e = $r = $c = 0, $i = -1, $l = strlen($s); ++$i < $l;){
if(!$e && substr($s, $i, $bl) == $b){
$o[++$r][$c = 0] = '';
$i += $bl - 1;
}
elseif(substr($s, $i, $ql) == $q){
$e ? (substr($s, $i + $ql, $ql) == $q ?
$o[$r][$c] .= substr($s, $i += $ql, $ql) : $e = 0)
: (strlen($o[$r][$c]) == 0 ? $e = 1 : $o[$r][$c] .= substr($s, $i, $ql));
$i += $ql - 1;
}
elseif(!$e && substr($s, $i, $dl) == $d){
$o[$r][++$c] = '';
$i += $dl - 1;
}
else
$o[$r][$c] .= $s[$i];
}
return true;
}
}
?>






Comments
Snippets Manager replied on Mon, 2012/05/07 - 2:32pm
Snippets Manager replied on Mon, 2012/05/07 - 2:32pm