最新消息: 新版网站上线了!!!

php读取csv类

  1. <?php 
  2. ini_set('memory_limit''1G'); 
  3. class CsvReader { 
  4.     private $csv_file
  5.     private $spl_object = null; 
  6.     private $error
  7.  
  8.     public function __construct($csv_file = '') { 
  9.         if($csv_file && file_exists($csv_file)) { 
  10.             $this->csv_file = $csv_file
  11.         } 
  12.     } 
  13.  
  14.     public function set_csv_file($csv_file) { 
  15.         if(!$csv_file || !file_exists($csv_file)) { 
  16.             $this->error = 'File invalid'
  17.             return false; 
  18.         } 
  19.         $this->csv_file = $csv_file
  20.         $this->spl_object = null; 
  21.     } 
  22.  
  23.     public function get_csv_file() { 
  24.         return $this->csv_file; 
  25.     } 
  26.  
  27.     private function _file_valid($file = '') { 
  28.         $file = $file ? $file : $this->csv_file; 
  29.         if(!$file || !file_exists($file)) { 
  30.             return false; 
  31.         } 
  32.         if(!is_readable($file)) { 
  33.             return false; 
  34.         } 
  35.         return true; 
  36.     } 
  37.  
  38.     private function _open_file() { 
  39.         if(!$this->_file_valid()) { 
  40.             $this->error = 'File invalid'
  41.             return false; 
  42.         } 
  43.         if($this->spl_object == null) { 
  44.             $this->spl_object = new SplFileObject($this->csv_file, 'rb'); 
  45.         } 
  46.         return true; 
  47.     } 
  48.  
  49.     public function get_data($length = 0, $start = 0) { 
  50.         if(!$this->_open_file()) { 
  51.             return false; 
  52.         } 
  53.         $length = $length ? $length : $this->get_lines(); 
  54.         $start = $start-1; 
  55.         $start = ($start < 0) ? 0 : $start
  56.         $data = array(); 
  57.         $this->spl_object->seek($start); 
  58.         while ($length-- && !$this->spl_object->eof()) { 
  59.             $rows = $this->spl_object->fgetcsv(); 
  60.             foreach($rows as $k=>$v){ 
  61.                 $data[$length][] = iconv('gbk''utf-8'$v); 
  62.             } 
  63.             $this->spl_object->next(); 
  64.         } 
  65.         return $data
  66.     } 
  67.  
  68.     public function get_lines() { 
  69.         if(!$this->_open_file()) { 
  70.             return false; 
  71.         } 
  72.         $this->spl_object->seek(filesize($this->csv_file)); 
  73.         return $this->spl_object->key(); 
  74.     } 
  75.  
  76.     public function get_error() { 
  77.         return $this->error; 
  78.     } 
  79. $csv_file = 'xxx.csv'
  80. $csvreader = new CsvReader($csv_file); 
  81. $line_number = $csvreader->get_lines(); 
  82. $data = $csvreader->get_data(); 
  83. echo $line_numberchr(10); 
  84. echo "<pre>"
  85. print_r($data); 
  86. ?> 

 

转载请注明:谷谷点程序 » php读取csv类