note 68213 added to function.fgetcsv

From: Date: Tue, 18 Jul 2006 16:14:19 +0000
Subject: note 68213 added to function.fgetcsv
Groups: php.notes 
Request: Send a blank email to php-notes+get-114889@lists.php.net to get a copy of this message
Here is a OOP based importer similar to the one posted earlier. However, this is slightly more flexible in that you can import huge files without running out of memory, you just have to use a limit on the get() method Sample usage for small files:- ------------------------------------- $importer = new CsvImporter("small.txt",true); $data = $importer->get(); print_r($data); Sample usage for large files:- ------------------------------------- $importer = new CsvImporter("large.txt",true); while($data = $importer->get(2000)) { print_r($data); } And heres the class:- ------------------------------------- class CsvImporter { private $fp; private $parse_header; private $header; private $delimiter; private $length; //-------------------------------------------------------------------- function __construct($file_name, $parse_header=false, $delimiter="\t", $length=8000) { $this->fp = fopen($file_name, "r"); $this->parse_header = $parse_header; $this->delimiter = $delimiter; $this->length = $length; $this->lines = $lines; if ($this->parse_header) { $this->header = fgetcsv($this->fp, $this->length, $this->delimiter); } } //-------------------------------------------------------------------- function __destruct() { if ($this->fp) { fclose($this->fp); } } //-------------------------------------------------------------------- function get($max_lines=0) { //if $max_lines is set to 0, then get all the data $data = array(); if ($max_lines > 0) $line_count = 0; else $line_count = -1; // so loop limit is ignored while ($line_count < $max_lines && ($row = fgetcsv($this->fp, $this->length, $this->delimiter)) !== FALSE) { if ($this->parse_header) { foreach ($this->header as $i => $heading_i) { $row_new[$heading_i] = $row[$i]; } $data[] = $row_new; } else { $data[] = $row; } if ($max_lines > 0) $line_count++; } return $data; } //-------------------------------------------------------------------- } ---- Server IP: 216.235.15.211 Probable Submitter: 209.112.47.82 ---- X-Spam-Status: No, hits=3.1 required=5.0 tests=DATE_MISSING,FROM_NO_LOWER autolearn=no version=2.64 ---- Manual Page -- http://www.php.net/manual/en/function.fgetcsv.php Edit -- http://master.php.net/note/edit/68213 Del: integrated -- http://master.php.net/note/delete/68213/integrated Del: useless -- http://master.php.net/note/delete/68213/useless Del: bad code -- http://master.php.net/note/delete/68213/bad+code Del: spam -- http://master.php.net/note/delete/68213/spam Del: non-english -- http://master.php.net/note/delete/68213/non-english Del: in docs -- http://master.php.net/note/delete/68213/in+docs Del: other reasons-- http://master.php.net/note/delete/68213 Reject -- http://master.php.net/note/reject/68213 Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#114889) next »