Skip to content
umefarooq edited this page Apr 5, 2013 · 15 revisions

Category:Libraries::CSV

CSV Formatted Data Reader

This is a utility class built to support my own strategy for multilingual and translation management as explained in the LangBuilder entry.

But I'm sure you'll find other kind of usage...

Requirements

  • CI: tested on 1.6.2
  • PHP: tested on 5.2.9

Updated to use the more reliable fgetcsv() native function in a php4 compatible way (not verified).

The library code

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); /**  * CSVReader Class  *   * $Id: csvreader.php 54 2009-10-21 21:01:52Z Pierre-Jean $  *   * Allows to retrieve a CSV file content as a two dimensional array.  * Optionally, the first text line may contains the column names to  * be used to retrieve fields values (default).  *   * Let's consider the following CSV formatted data:  *   * "col1";"col2";"col3"  * "11";"12";"13"  * "21;"22;"2;3"  *   * It's returned as follow by the parsing operation with first line  * used to name fields:  *   * Array(  * [0] => Array(  * [col1] => 11,  * [col2] => 12,  * [col3] => 13  * )  * [1] => Array(  * [col1] => 21,  * [col2] => 22,  * [col3] => 2;3  * )  * )  *   * @author Pierre-Jean Turpeau  * @link http://www.codeigniter.com/wiki/CSVReader  */ class CSVReader { var $fields; /** columns names retrieved after parsing */ var $separator = ';'; /** separator used to explode each line */ var $enclosure = '"'; /** enclosure used to decorate each field */ var $max_row_size = 4096; /** maximum row size to be used for decoding */ /**  * Parse a file containing CSV formatted data.  *  * @access public  * @param string  * @param boolean  * @return array  */ function parse_file($p_Filepath, $p_NamedFields = true) { $content = false; $file = fopen($p_Filepath, 'r'); if($p_NamedFields) { $this->fields = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure); } while( ($row = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure)) != false ) { if( $row[0] != null ) { // skip empty lines if( !$content ) { $content = array(); } if( $p_NamedFields ) { $items = array(); // I prefer to fill the array with values of defined fields foreach( $this->fields as $id => $field ) { if( isset($row[$id]) ) { $items[$field] = $row[$id]; } } $content[] = $items; } else { $content[] = $row; } } } fclose($file); return $content; } } ?>

Category:Contributions::Libraries::Files

Clone this wiki locally