|
|
- <?php
- namespace SparkLib;
-
- use \Exception;
-
- /**
- * CSV - A simple tool to generate a CSV string, ideally
- * to be sent back to users as text/csv
- *
- * This probably exists in thousands of PEAR modules and equally
- * many other places. But really, it's only a few lines of code.
- *
- * This is cheesy and probably fails in common cases, but so far
- * it has worked well enough for our purposes.
- */
- class CSV {
-
- private $_data = array();
- private $_header = array();
-
- /**
- * Add named header fields to the top of the file.
- */
- public function addHeader (array $header)
- {
- if (! is_array($header))
- throw new Exception('SparkLib\CSV expects an array as a header');
-
- $this->_header = $header;
- }
-
- /**
- * Add a row of data.
- */
- public function addRow (array $row)
- {
- $this->_data[] = $row;
- }
-
- /**
- * Spit out a string containing the entire CSV.
- */
- public function render()
- {
- $ret = '';
-
- if(!empty($this->_header)) {
- foreach($this->_header as $field) {
- $ret .= '"' . str_replace('"', '""', addslashes($field)) . '",';
- }
- $ret[strlen($ret) - 1] = "\n";
- }
-
- foreach($this->_data as $row) {
- foreach($row as $field) {
- $ret .= '"' . str_replace('"', '""', addslashes($field)) . '",';
- }
- $ret[strlen($ret) - 1] = "\n";
- }
- return $ret;
- }
-
- }
|