<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: writer code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sun, 27 Jul 2008 00:57:52 GMT</pubDate>
    <description>DZone Snippets: writer code</description>
    <item>
      <title>CSV Parser / Writer for PHP</title>
      <link>http://snippets.dzone.com/posts/show/3128</link>
      <description>CSV Parser / Writer&lt;br /&gt;&lt;br /&gt;Example A:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//cell separator, row separator, value enclosure&lt;br /&gt;$csv = new CSV(';', "\r\n", '"');&lt;br /&gt;&lt;br /&gt;//parse the string content&lt;br /&gt;$csv-&gt;setContent(file_get_contents('data.csv'));&lt;br /&gt;&lt;br /&gt;//returns an array with the CSV data&lt;br /&gt;print_r($csv-&gt;getArray());&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Exemple B:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$csv = new CSV(';', "\r\n", '"');&lt;br /&gt;//sets up the content through an array&lt;br /&gt;$csv-&gt;setArray(&lt;br /&gt;	array(&lt;br /&gt;		array('col"una1', "colu\r\nna2"),&lt;br /&gt;		array('col;una3', 'coluna4')&lt;br /&gt;	)&lt;br /&gt;);&lt;br /&gt;//retorns string with the CSV representation&lt;br /&gt;print $csv-&gt;getContent();&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;?php&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com&lt;br /&gt;class CSV{&lt;br /&gt;	var $cellDelimiter;&lt;br /&gt;	var $valueEnclosure;&lt;br /&gt;	var $rowDelimiter;&lt;br /&gt;&lt;br /&gt;	function CSV($cellDelimiter, $rowDelimiter, $valueEnclosure){&lt;br /&gt;		$this-&gt;cellDelimiter = $cellDelimiter;&lt;br /&gt;		$this-&gt;valueEnclosure = $valueEnclosure;&lt;br /&gt;		$this-&gt;rowDelimiter = $rowDelimiter;&lt;br /&gt;		$this-&gt;o = array();&lt;br /&gt;	}&lt;br /&gt;	function getArray(){&lt;br /&gt;		return $this-&gt;o;&lt;br /&gt;	}&lt;br /&gt;	function setArray($o){&lt;br /&gt;		$this-&gt;o = $o;&lt;br /&gt;	}&lt;br /&gt;	function getContent(){&lt;br /&gt;		if(!(($bl = strlen($b = $this-&gt;rowDelimiter)) &amp;&amp; ($dl = strlen($d = $this-&gt;cellDelimiter)) &amp;&amp; ($ql = strlen($q = $this-&gt;valueEnclosure))))&lt;br /&gt;			return '';&lt;br /&gt;		for($o = $this-&gt;o, $i = -1; ++$i &lt; count($o);){&lt;br /&gt;			for($e = 0, $j = -1; ++$j &lt; count($o[$i]);)&lt;br /&gt;				(($e = strpos($o[$i][$j], $q) !== false) || strpos($o[$i][$j], $b) !== false || strpos($o[$i][$j], $d) !== false)&lt;br /&gt;				&amp;&amp; $o[$i][$j] = $q . ($e ? str_replace($q, $q . $q, $o[$i][$j]) : $o[$i][$j]) . $q;&lt;br /&gt;			$o[$i] = implode($d, $o[$i]);&lt;br /&gt;		}&lt;br /&gt;		return implode($b, $o);&lt;br /&gt;	}&lt;br /&gt;	function setContent($s){&lt;br /&gt;		$this-&gt;o = array();&lt;br /&gt;		if(!strlen($s))&lt;br /&gt;			return true;&lt;br /&gt;		if(!(($bl = strlen($b = $this-&gt;rowDelimiter)) &amp;&amp; ($dl = strlen($d = $this-&gt;cellDelimiter)) &amp;&amp; ($ql = strlen($q = $this-&gt;valueEnclosure))))&lt;br /&gt;			return false;&lt;br /&gt;		for($o = array(array('')), $this-&gt;o = &amp;$o, $e = $r = $c = 0, $i = -1, $l = strlen($s); ++$i &lt; $l;){&lt;br /&gt;			if(!$e &amp;&amp; substr($s, $i, $bl) == $b){&lt;br /&gt;				$o[++$r][$c = 0] = '';&lt;br /&gt;				$i += $bl - 1;&lt;br /&gt;			}&lt;br /&gt;			elseif(substr($s, $i, $ql) == $q){&lt;br /&gt;				$e ? (substr($s, $i + $ql, $ql) == $q ?&lt;br /&gt;				$o[$r][$c] .= substr($s, $i += $ql, $ql) : $e = 0)&lt;br /&gt;				: (strlen($o[$r][$c]) == 0 ? $e = 1 : $o[$r][$c] .= substr($s, $i, $ql));&lt;br /&gt;				$i += $ql - 1;&lt;br /&gt;			}&lt;br /&gt;			elseif(!$e &amp;&amp; substr($s, $i, $dl) == $d){&lt;br /&gt;				$o[$r][++$c] = '';&lt;br /&gt;				$i += $dl - 1;&lt;br /&gt;			}&lt;br /&gt;			else&lt;br /&gt;				$o[$r][$c] .= $s[$i];&lt;br /&gt;		}&lt;br /&gt;		return true;&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;?&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 11 Dec 2006 22:36:10 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3128</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
  </channel>
</rss>
