From 9e6fdbb42ab373aa48a14ced77d279c6cbe7f854 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Wed, 5 Feb 2014 18:22:20 -0500 Subject: [PATCH 01/40] Updated project link --- parsecsv.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 4f1ba89..e997a2a 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -5,7 +5,7 @@ class parseCSV { /* Class: parseCSV v0.4.3 beta - http://code.google.com/p/parsecsv-for-php/ + https://github.com/jimeh/php-parsecsv Fully conforms to the specifications lined out on wikipedia: From e16d818d07a08e188b3d84a2a080a29f600235ca Mon Sep 17 00:00:00 2001 From: William Knauss Date: Wed, 5 Feb 2014 18:24:41 -0500 Subject: [PATCH 02/40] cleaned up construct --- parsecsv.lib.php | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index e997a2a..57eba4c 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -174,10 +174,21 @@ class parseCSV { * @return nothing */ function parseCSV ($input = null, $offset = null, $limit = null, $conditions = null) { - if ( $offset !== null ) $this->offset = $offset; - if ( $limit !== null ) $this->limit = $limit; - if ( count($conditions) > 0 ) $this->conditions = $conditions; - if ( !empty($input) ) $this->parse($input); + if ($offset!==null) { + $this->offset = $offset; + } + + if ($limit!==null) { + $this->limit = $limit; + } + + if (count($conditions)>0) { + $this->conditions = $conditions; + } + + if (!empty($input)) { + $this->parse($input); + } } From 8dd2e5207328ec7cc48caa2b0b78dc2532e28a13 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Wed, 5 Feb 2014 18:25:13 -0500 Subject: [PATCH 03/40] __construct readability --- parsecsv.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 57eba4c..fe7d5ee 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -173,7 +173,7 @@ class parseCSV { * @param input CSV file or string * @return nothing */ - function parseCSV ($input = null, $offset = null, $limit = null, $conditions = null) { + public function __construct ($input = null, $offset = null, $limit = null, $conditions = null) { if ($offset!==null) { $this->offset = $offset; } From 6a6754ca04fbf6a3e1e6d9557d8227d113649577 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Wed, 5 Feb 2014 18:29:01 -0500 Subject: [PATCH 04/40] __construct documentation --- parsecsv.lib.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index fe7d5ee..967e143 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -170,8 +170,13 @@ class parseCSV { /** * Constructor - * @param input CSV file or string - * @return nothing + * Class constructor + * + * @access public + * @param [input] string The CSV string or a direct filepath + * @param [offset] integer Number of rows to ignore from the beginning of the data + * @param [limit] integer Limits the number of returned rows to specified amount + * @param [conditions] string Basic SQL-like conditions for row matching */ public function __construct ($input = null, $offset = null, $limit = null, $conditions = null) { if ($offset!==null) { From 4454196b4c9190446cc99fff05fe86cdcd93facc Mon Sep 17 00:00:00 2001 From: William Knauss Date: Wed, 5 Feb 2014 18:31:27 -0500 Subject: [PATCH 05/40] parse readability --- parsecsv.lib.php | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 967e143..d389b7b 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -206,20 +206,37 @@ class parseCSV { * @param input CSV file or string * @return nothing */ - function parse ($input = null, $offset = null, $limit = null, $conditions = null) { - if ( $input === null ) $input = $this->file; - if ( !empty($input) ) { - if ( $offset !== null ) $this->offset = $offset; - if ( $limit !== null ) $this->limit = $limit; - if ( count($conditions) > 0 ) $this->conditions = $conditions; - if ( is_readable($input) ) { + public function parse ($input = null, $offset = null, $limit = null, $conditions = null) { + if ($input===null) { + $input = $this->file; + } + + if (!empty($input)) { + if ($offset!==null) { + $this->offset = $offset; + } + + if ($limit!==null) { + $this->limit = $limit; + } + + if (count($conditions)>0) { + $this->conditions = $conditions; + } + + if (is_readable($input)) { $this->data = $this->parse_file($input); - } else { + } + else { $this->file_data = &$input; $this->data = $this->parse_string(); } - if ( $this->data === false ) return false; + + if ($this->data===false) { + return false; + } } + return true; } From d6a070ce08b6b4ef3a8ecb775a96fb5aea250c8d Mon Sep 17 00:00:00 2001 From: William Knauss Date: Wed, 5 Feb 2014 18:33:44 -0500 Subject: [PATCH 06/40] Change __constructor docblock stype --- parsecsv.lib.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index d389b7b..0e86672 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -173,10 +173,10 @@ class parseCSV { * Class constructor * * @access public - * @param [input] string The CSV string or a direct filepath - * @param [offset] integer Number of rows to ignore from the beginning of the data - * @param [limit] integer Limits the number of returned rows to specified amount - * @param [conditions] string Basic SQL-like conditions for row matching + * @param [string] input The CSV string or a direct filepath + * @param [integer] offset Number of rows to ignore from the beginning of the data + * @param [integer] limit Limits the number of returned rows to specified amount + * @param [string] conditions Basic SQL-like conditions for row matching */ public function __construct ($input = null, $offset = null, $limit = null, $conditions = null) { if ($offset!==null) { @@ -236,7 +236,7 @@ class parseCSV { return false; } } - + return true; } From 585a0d472ea99dba19ee9b9a5fbdd39d2f5335e8 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Wed, 5 Feb 2014 18:37:23 -0500 Subject: [PATCH 07/40] parse documentation --- parsecsv.lib.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 0e86672..2b4fa27 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -201,10 +201,17 @@ class parseCSV { // ----- [ Main Functions ] --------------------- // ============================================== + /** - * Parse CSV file or string - * @param input CSV file or string - * @return nothing + * Parse + * Parse a CSV file or string + * + * @access public + * @param [string] input The CSV string or a direct filepath + * @param [integer] offset Number of rows to ignore from the beginning of the data + * @param [integer] limit Limits the number of returned rows to specified amount + * @param [string] conditions Basic SQL-like conditions for row matching + * @return [bool] */ public function parse ($input = null, $offset = null, $limit = null, $conditions = null) { if ($input===null) { @@ -229,7 +236,7 @@ class parseCSV { } else { $this->file_data = &$input; - $this->data = $this->parse_string(); + $this->data = $this->parse_string(); } if ($this->data===false) { From 0638049fb2fb495ea79bf63cc457167782cb78a1 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Wed, 5 Feb 2014 18:38:55 -0500 Subject: [PATCH 08/40] save readability --- parsecsv.lib.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 2b4fa27..cae764b 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -255,10 +255,14 @@ class parseCSV { * @param fields field names * @return true or false */ - function save ($file = null, $data = array(), $append = false, $fields = array()) { - if ( empty($file) ) $file = &$this->file; - $mode = ( $append ) ? 'at' : 'wt' ; - $is_php = ( preg_match('/\.php$/i', $file) ) ? true : false ; + public function save ($file = null, $data = array(), $append = false, $fields = array()) { + if (empty($file)) { + $file = &$this->file; + } + + $mode = ($append) ? 'at' : 'wt'; + $is_php = (preg_match('/\.php$/i', $file)) ? true : false; + return $this->_wfile($file, $this->unparse($data, $fields, $append, $is_php), $mode); } From c7e1f825a0f4a32c9987a4cae718ed800ff38244 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Wed, 5 Feb 2014 18:41:21 -0500 Subject: [PATCH 09/40] save documentation --- parsecsv.lib.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index cae764b..f09ab11 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -248,12 +248,15 @@ class parseCSV { } /** - * Save changes, or new file and/or data - * @param file file to save to - * @param data 2D array with data - * @param append append current data to end of target CSV if exists - * @param fields field names - * @return true or false + * Save + * Save changes, or write a new file and/or data + * + * @access public + * @param [string] $file File location to save to + * @param [array] $data 2D array of data + * @param [bool] $append Append current data to end of target CSV, if file exists + * @param [array] $fields Field names + * @return [bool] */ public function save ($file = null, $data = array(), $append = false, $fields = array()) { if (empty($file)) { From 8bb8e2d7cf5d32279c09fb7ec484369a42a2da64 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Wed, 5 Feb 2014 19:09:57 -0500 Subject: [PATCH 10/40] output readability --- parsecsv.lib.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index f09ab11..84f4c8e 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -278,14 +278,22 @@ class parseCSV { * @return CSV data using delimiter of choice, or default */ function output ($filename = null, $data = array(), $fields = array(), $delimiter = null) { - if ( empty($filename) ) $filename = $this->output_filename; - if ( $delimiter === null ) $delimiter = $this->output_delimiter; + if (empty($filename)) { + $filename = $this->output_filename; + } + + if ($delimiter===null) { + $delimiter = $this->output_delimiter; + } + $data = $this->unparse($data, $fields, null, null, $delimiter); - if ( $filename !== null ) { + + if ($filename!==null) { header('Content-type: application/csv'); header('Content-Disposition: attachment; filename="'.$filename.'"'); echo $data; } + return $data; } From 4639fa1701635aaf0e3f2190339bd8c3c4f008f4 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Wed, 5 Feb 2014 19:12:16 -0500 Subject: [PATCH 11/40] Output documentation --- parsecsv.lib.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 84f4c8e..033777f 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -270,14 +270,17 @@ class parseCSV { } /** - * Generate CSV based string for output - * @param filename if specified, headers and data will be output directly to browser as a downloable file - * @param data 2D array with data - * @param fields field names - * @param delimiter delimiter used to separate data - * @return CSV data using delimiter of choice, or default + * Output + * Generate a CSV based string for output. + * + * @access public + * @param [string] $filename If specified, headers and data will be output directly to browser as a downloable file + * @param [array] $data 2D array with data + * @param [array] $fields Field names + * @param [type] $delimiter delimiter used to separate data + * @return [string] */ - function output ($filename = null, $data = array(), $fields = array(), $delimiter = null) { + public function output ($filename = null, $data = array(), $fields = array(), $delimiter = null) { if (empty($filename)) { $filename = $this->output_filename; } From 05dbcaf65257ed8daa2f5d139ab2876a66a0fc6f Mon Sep 17 00:00:00 2001 From: William Knauss Date: Wed, 5 Feb 2014 19:14:00 -0500 Subject: [PATCH 12/40] encoding update --- parsecsv.lib.php | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 033777f..aeeafd4 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -301,15 +301,22 @@ class parseCSV { } /** + * Encoding * Convert character encoding - * @param input input character encoding, uses default if left blank - * @param output output character encoding, uses default if left blank - * @return nothing + * + * @access public + * @param [string] $input Input character encoding, uses default if left blank + * @param [string] $output Output character encoding, uses default if left blank */ function encoding ($input = null, $output = null) { $this->convert_encoding = true; - if ( $input !== null ) $this->input_encoding = $input; - if ( $output !== null ) $this->output_encoding = $output; + if ($input!== null) { + $this->input_encoding = $input; + } + + if ($output!==null) { + $this->output_encoding = $output; + } } /** From 2f142e73132c5de2a09b2ae08fe7ca340891969a Mon Sep 17 00:00:00 2001 From: William Knauss Date: Wed, 5 Feb 2014 19:16:35 -0500 Subject: [PATCH 13/40] public encoding --- parsecsv.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index aeeafd4..01aa1f4 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -308,7 +308,7 @@ class parseCSV { * @param [string] $input Input character encoding, uses default if left blank * @param [string] $output Output character encoding, uses default if left blank */ - function encoding ($input = null, $output = null) { + public function encoding ($input = null, $output = null) { $this->convert_encoding = true; if ($input!== null) { $this->input_encoding = $input; From eb3c9faa4aea2632f9f5f89f1f0cf5e1edda9a4d Mon Sep 17 00:00:00 2001 From: William Knauss Date: Wed, 5 Feb 2014 19:16:51 -0500 Subject: [PATCH 14/40] construct docblock spacing --- parsecsv.lib.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 01aa1f4..d9c8dc1 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -173,10 +173,10 @@ class parseCSV { * Class constructor * * @access public - * @param [string] input The CSV string or a direct filepath - * @param [integer] offset Number of rows to ignore from the beginning of the data - * @param [integer] limit Limits the number of returned rows to specified amount - * @param [string] conditions Basic SQL-like conditions for row matching + * @param [string] input The CSV string or a direct filepath + * @param [integer] offset Number of rows to ignore from the beginning of the data + * @param [integer] limit Limits the number of returned rows to specified amount + * @param [string] conditions Basic SQL-like conditions for row matching */ public function __construct ($input = null, $offset = null, $limit = null, $conditions = null) { if ($offset!==null) { From b72385395e8ef5034e786f97c2ce2da260f4d2e3 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Thu, 6 Feb 2014 08:17:00 -0500 Subject: [PATCH 15/40] condition spacing --- parsecsv.lib.php | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index d9c8dc1..ad0d4d6 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -12,7 +12,12 @@ class parseCSV { - http://en.wikipedia.org/wiki/Comma-separated_values Based on the concept of Ming Hong Ng's CsvFileParser class: - - http://minghong.blogspot.com/2006/07/csv-parser-for-php.html + - + + + + + @@ -179,19 +184,19 @@ class parseCSV { * @param [string] conditions Basic SQL-like conditions for row matching */ public function __construct ($input = null, $offset = null, $limit = null, $conditions = null) { - if ($offset!==null) { + if ( $offset !== null ) { $this->offset = $offset; } - if ($limit!==null) { + if ( $limit !== null ) { $this->limit = $limit; } - if (count($conditions)>0) { + if ( count($conditions) > 0 ) { $this->conditions = $conditions; } - if (!empty($input)) { + if ( !empty($input) ) { $this->parse($input); } } @@ -214,24 +219,24 @@ class parseCSV { * @return [bool] */ public function parse ($input = null, $offset = null, $limit = null, $conditions = null) { - if ($input===null) { + if ( $input === null ) { $input = $this->file; } - if (!empty($input)) { - if ($offset!==null) { + if ( !empty($input) ) { + if ( $offset !== null ) { $this->offset = $offset; } - if ($limit!==null) { + if ($limit !== null ) { $this->limit = $limit; } - if (count($conditions)>0) { + if ( count($conditions) > 0 ) { $this->conditions = $conditions; } - if (is_readable($input)) { + if ( is_readable($input) ) { $this->data = $this->parse_file($input); } else { @@ -239,7 +244,7 @@ class parseCSV { $this->data = $this->parse_string(); } - if ($this->data===false) { + if ( $this->data === false ) { return false; } } @@ -259,7 +264,7 @@ class parseCSV { * @return [bool] */ public function save ($file = null, $data = array(), $append = false, $fields = array()) { - if (empty($file)) { + if ( empty($file) ) { $file = &$this->file; } @@ -281,17 +286,17 @@ class parseCSV { * @return [string] */ public function output ($filename = null, $data = array(), $fields = array(), $delimiter = null) { - if (empty($filename)) { + if ( empty($filename) ) { $filename = $this->output_filename; } - if ($delimiter===null) { + if ( $delimiter === null ) { $delimiter = $this->output_delimiter; } $data = $this->unparse($data, $fields, null, null, $delimiter); - if ($filename!==null) { + if ( $filename !== null ) { header('Content-type: application/csv'); header('Content-Disposition: attachment; filename="'.$filename.'"'); echo $data; @@ -310,11 +315,11 @@ class parseCSV { */ public function encoding ($input = null, $output = null) { $this->convert_encoding = true; - if ($input!== null) { + if ( $input !== null ) { $this->input_encoding = $input; } - if ($output!==null) { + if ( $output !== null ) { $this->output_encoding = $output; } } From 75038f9d2f7b6f8f0cc4233142cd85e78df3907c Mon Sep 17 00:00:00 2001 From: William Knauss Date: Thu, 6 Feb 2014 18:27:54 -0500 Subject: [PATCH 16/40] auto readability --- parsecsv.lib.php | 60 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index ad0d4d6..cd65dc3 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -334,31 +334,45 @@ class parseCSV { * @param enclosure enclosure character, default is double quote ("). * @return delimiter character */ - function auto ($file = null, $parse = true, $search_depth = null, $preferred = null, $enclosure = null) { + public function auto ($file = null, $parse = true, $search_depth = null, $preferred = null, $enclosure = null) { - if ( $file === null ) $file = $this->file; - if ( empty($search_depth) ) $search_depth = $this->auto_depth; - if ( $enclosure === null ) $enclosure = $this->enclosure; + if ( $file === null ) { + $file = $this->file; + } + + if ( empty($search_depth) ) { + $search_depth = $this->auto_depth; + } + + if ( $enclosure === null ) { + $enclosure = $this->enclosure; + } - if ( $preferred === null ) $preferred = $this->auto_preferred; + if ( $preferred === null ) { + $preferred = $this->auto_preferred; + } if ( empty($this->file_data) ) { if ( $this->_check_data($file) ) { $data = &$this->file_data; - } else return false; - } else { + } + else { + return false; + } + } + else { $data = &$this->file_data; } - $chars = array(); - $strlen = strlen($data); + $chars = array(); + $strlen = strlen($data); $enclosed = false; - $n = 1; - $to_end = true; + $n = 1; + $to_end = true; // walk specific depth finding posssible delimiter characters for ( $i=0; $i < $strlen; $i++ ) { - $ch = $data{$i}; + $ch = $data{$i}; $nch = ( isset($data{$i+1}) ) ? $data{$i+1} : false ; $pch = ( isset($data{$i-1}) ) ? $data{$i-1} : false ; @@ -366,25 +380,30 @@ class parseCSV { if ( $ch == $enclosure ) { if ( !$enclosed || $nch != $enclosure ) { $enclosed = ( $enclosed ) ? false : true ; - } elseif ( $enclosed ) { + } + elseif ( $enclosed ) { $i++; } // end of row - } elseif ( ($ch == "\n" && $pch != "\r" || $ch == "\r") && !$enclosed ) { + } + elseif ( ($ch == "\n" && $pch != "\r" || $ch == "\r") && !$enclosed ) { if ( $n >= $search_depth ) { $strlen = 0; $to_end = false; - } else { + } + else { $n++; } // count character - } elseif (!$enclosed) { + } + elseif (!$enclosed) { if ( !preg_match('/['.preg_quote($this->auto_non_chars, '/').']/i', $ch) ) { if ( !isset($chars[$ch][$n]) ) { $chars[$ch][$n] = 1; - } else { + } + else { $chars[$ch][$n]++; } } @@ -392,7 +411,7 @@ class parseCSV { } // filtering - $depth = ( $to_end ) ? $n-1 : $n ; + $depth = ( $to_end ) ? $n-1 : $n ; $filtered = array(); foreach( $chars as $char => $value ) { if ( $match = $this->_check_count($char, $value, $depth, $preferred) ) { @@ -405,10 +424,11 @@ class parseCSV { $this->delimiter = reset($filtered); // parse data - if ( $parse ) $this->data = $this->parse_string(); + if ( $parse ) { + $this->data = $this->parse_string(); + } return $this->delimiter; - } From 9301b016c84a41b42c70c4bed049cab48f4f9e08 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Thu, 6 Feb 2014 18:30:11 -0500 Subject: [PATCH 17/40] auto documentation --- parsecsv.lib.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index cd65dc3..bb1bf27 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -325,14 +325,17 @@ class parseCSV { } /** + * Auto * Auto-Detect Delimiter: Find delimiter by analyzing a specific number of * rows to determine most probable delimiter character - * @param file local CSV file - * @param parse true/false parse file directly - * @param search_depth number of rows to analyze - * @param preferred preferred delimiter characters - * @param enclosure enclosure character, default is double quote ("). - * @return delimiter character + * + * @access public + * @param [string] $file Local CSV file + * @param [bool] $parse True/false parse file directly + * @param [int] $search_depth Number of rows to analyze + * @param [string] $preferred Preferred delimiter characters + * @param [string] $enclosure Enclosure character, default is double quote ("). + * @return [string] */ public function auto ($file = null, $parse = true, $search_depth = null, $preferred = null, $enclosure = null) { From 2988278f0bfe6480ff84cc1851f02b22cd5b7880 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Thu, 6 Feb 2014 18:30:43 -0500 Subject: [PATCH 18/40] parse_file readability --- parsecsv.lib.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index bb1bf27..5399beb 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -444,9 +444,15 @@ class parseCSV { * @param file local CSV file * @return 2D array with CSV data, or false on failure */ - function parse_file ($file = null) { - if ( $file === null ) $file = $this->file; - if ( empty($this->file_data) ) $this->load_data($file); + public function parse_file ($file = null) { + if ( $file === null ) { + $file = $this->file; + } + + if ( empty($this->file_data) ) { + $this->load_data($file); + } + return ( !empty($this->file_data) ) ? $this->parse_string() : false ; } From 0323d5108b33c6d80e1c22d092606d96e3bd3627 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Thu, 6 Feb 2014 18:31:34 -0500 Subject: [PATCH 19/40] parse_file documentation --- parsecsv.lib.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 5399beb..a33c59d 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -440,9 +440,12 @@ class parseCSV { // ============================================== /** + * Parse File * Read file to string and call parse_string() - * @param file local CSV file - * @return 2D array with CSV data, or false on failure + * + * @access public + * @param [string] $file Local CSV file + * @return [array|bool] */ public function parse_file ($file = null) { if ( $file === null ) { @@ -452,7 +455,7 @@ class parseCSV { if ( empty($this->file_data) ) { $this->load_data($file); } - + return ( !empty($this->file_data) ) ? $this->parse_string() : false ; } From ba1d4620442e2612bdc85ec78e970a5178fb189d Mon Sep 17 00:00:00 2001 From: William Knauss Date: Fri, 9 May 2014 21:30:47 -0400 Subject: [PATCH 20/40] updated properties to "public" removed "var" and set to "public" --- parsecsv.lib.php | 264 +++++++++++++++++++++++------------------------ 1 file changed, 132 insertions(+), 132 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index a33c59d..c2a54d7 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -1,26 +1,26 @@ output (true, 'movies.csv', $array); ---------------- - + */ @@ -88,71 +88,71 @@ class parseCSV { * Configuration * - set these options with $object->var_name = 'value'; */ - + # use first line/entry as field names - var $heading = true; - + public $heading = true; + # override field names - var $fields = array(); - + public $fields = array(); + # sort entries by this field - var $sort_by = null; - var $sort_reverse = false; - + public $sort_by = null; + public $sort_reverse = false; + # sort behavior passed to ksort/krsort functions # regular = SORT_REGULAR # numeric = SORT_NUMERIC # string = SORT_STRING - var $sort_type = null; - + public $sort_type = null; + # delimiter (comma) and enclosure (double quote) - var $delimiter = ','; - var $enclosure = '"'; - + public $delimiter = ','; + public $enclosure = '"'; + # basic SQL-like conditions for row matching - var $conditions = null; - + public $conditions = null; + # number of rows to ignore from beginning of data - var $offset = null; - + public $offset = null; + # limits the number of returned rows to specified amount - var $limit = null; - + public $limit = null; + # number of rows to analyze when attempting to auto-detect delimiter - var $auto_depth = 15; - + public $auto_depth = 15; + # characters to ignore when attempting to auto-detect delimiter - var $auto_non_chars = "a-zA-Z0-9\n\r"; - + public $auto_non_chars = "a-zA-Z0-9\n\r"; + # preferred delimiter characters, only used when all filtering method # returns multiple possible delimiters (happens very rarely) - var $auto_preferred = ",;\t.:|"; - + public $auto_preferred = ",;\t.:|"; + # character encoding options - var $convert_encoding = false; - var $input_encoding = 'ISO-8859-1'; - var $output_encoding = 'ISO-8859-1'; - + public $convert_encoding = false; + public $input_encoding = 'ISO-8859-1'; + public $output_encoding = 'ISO-8859-1'; + # used by unparse(), save(), and output() functions - var $linefeed = "\r\n"; - + public $linefeed = "\r\n"; + # only used by output() function - var $output_delimiter = ','; - var $output_filename = 'data.csv'; - + public $output_delimiter = ','; + public $output_filename = 'data.csv'; + # keep raw file data in memory after successful parsing (useful for debugging) - var $keep_file_data = false; - + public $keep_file_data = false; + /** * Internal variables */ - + # current file - var $file; - + public $file; + # loaded file contents - var $file_data; - + public $file_data; + # error while parsing input data # 0 = No errors found. Everything should be fine :) # 1 = Hopefully correctable syntax error was found. @@ -161,18 +161,18 @@ class parseCSV { # the file is either corrupt, or does not # standard CSV formatting. Please validate # the parsed data yourself. - var $error = 0; - + public $error = 0; + # detailed error info - var $error_info = array(); - + public $error_info = array(); + # array of field values in data parsed - var $titles = array(); - + public $titles = array(); + # two dimentional array of CSV data - var $data = array(); - - + public $data = array(); + + /** * Constructor * Class constructor @@ -189,24 +189,24 @@ class parseCSV { } if ( $limit !== null ) { - $this->limit = $limit; + $this->limit = $limit; } if ( count($conditions) > 0 ) { - $this->conditions = $conditions; - } + $this->conditions = $conditions; + } if ( !empty($input) ) { $this->parse($input); } } - - + + // ============================================== // ----- [ Main Functions ] --------------------- // ============================================== - - + + /** * Parse * Parse a CSV file or string @@ -220,16 +220,16 @@ class parseCSV { */ public function parse ($input = null, $offset = null, $limit = null, $conditions = null) { if ( $input === null ) { - $input = $this->file; - } + $input = $this->file; + } if ( !empty($input) ) { if ( $offset !== null ) { - $this->offset = $offset; + $this->offset = $offset; } if ($limit !== null ) { - $this->limit = $limit; + $this->limit = $limit; } if ( count($conditions) > 0 ) { @@ -238,20 +238,20 @@ class parseCSV { if ( is_readable($input) ) { $this->data = $this->parse_file($input); - } + } else { $this->file_data = &$input; $this->data = $this->parse_string(); } if ( $this->data === false ) { - return false; + return false; } } return true; } - + /** * Save * Save changes, or write a new file and/or data @@ -273,7 +273,7 @@ class parseCSV { return $this->_wfile($file, $this->unparse($data, $fields, $append, $is_php), $mode); } - + /** * Output * Generate a CSV based string for output. @@ -304,7 +304,7 @@ class parseCSV { return $data; } - + /** * Encoding * Convert character encoding @@ -323,7 +323,7 @@ class parseCSV { $this->output_encoding = $output; } } - + /** * Auto * Auto-Detect Delimiter: Find delimiter by analyzing a specific number of @@ -338,7 +338,7 @@ class parseCSV { * @return [string] */ public function auto ($file = null, $parse = true, $search_depth = null, $preferred = null, $enclosure = null) { - + if ( $file === null ) { $file = $this->file; } @@ -350,69 +350,69 @@ class parseCSV { if ( $enclosure === null ) { $enclosure = $this->enclosure; } - + if ( $preferred === null ) { $preferred = $this->auto_preferred; } - + if ( empty($this->file_data) ) { if ( $this->_check_data($file) ) { $data = &$this->file_data; - } + } else { - return false; - } - } + return false; + } + } else { $data = &$this->file_data; } - + $chars = array(); $strlen = strlen($data); $enclosed = false; $n = 1; $to_end = true; - + // walk specific depth finding posssible delimiter characters for ( $i=0; $i < $strlen; $i++ ) { $ch = $data{$i}; $nch = ( isset($data{$i+1}) ) ? $data{$i+1} : false ; $pch = ( isset($data{$i-1}) ) ? $data{$i-1} : false ; - + // open and closing quotes if ( $ch == $enclosure ) { if ( !$enclosed || $nch != $enclosure ) { $enclosed = ( $enclosed ) ? false : true ; - } + } elseif ( $enclosed ) { $i++; } - + // end of row - } + } elseif ( ($ch == "\n" && $pch != "\r" || $ch == "\r") && !$enclosed ) { if ( $n >= $search_depth ) { $strlen = 0; $to_end = false; - } + } else { $n++; } - + // count character - } + } elseif (!$enclosed) { if ( !preg_match('/['.preg_quote($this->auto_non_chars, '/').']/i', $ch) ) { if ( !isset($chars[$ch][$n]) ) { $chars[$ch][$n] = 1; - } + } else { $chars[$ch][$n]++; } } } } - + // filtering $depth = ( $to_end ) ? $n-1 : $n ; $filtered = array(); @@ -421,24 +421,24 @@ class parseCSV { $filtered[$match] = $char; } } - + // capture most probable delimiter ksort($filtered); $this->delimiter = reset($filtered); - + // parse data if ( $parse ) { - $this->data = $this->parse_string(); - } - + $this->data = $this->parse_string(); + } + return $this->delimiter; } - - + + // ============================================== // ----- [ Core Functions ] --------------------- // ============================================== - + /** * Parse File * Read file to string and call parse_string() @@ -458,7 +458,7 @@ class parseCSV { return ( !empty($this->file_data) ) ? $this->parse_string() : false ; } - + /** * Parse CSV strings to arrays * @param data CSV string @@ -470,9 +470,9 @@ class parseCSV { $data = &$this->file_data; } else return false; } - + $white_spaces = str_replace($this->delimiter, '', " \t\x0B\0"); - + $rows = array(); $row = array(); $row_count = 0; @@ -482,13 +482,13 @@ class parseCSV { $enclosed = false; $was_enclosed = false; $strlen = strlen($data); - + // walk through each character for ( $i=0; $i < $strlen; $i++ ) { $ch = $data{$i}; $nch = ( isset($data{$i+1}) ) ? $data{$i+1} : false ; $pch = ( isset($data{$i-1}) ) ? $data{$i-1} : false ; - + // open/close quotes, and inline quotes if ( $ch == $this->enclosure ) { if ( !$enclosed ) { @@ -542,7 +542,7 @@ class parseCSV { } else { $enclosed = false; } - + // end of field/row } elseif ( ($ch == $this->delimiter || $ch == "\n" || $ch == "\r") && !$enclosed ) { $key = ( !empty($head[$col]) ) ? $head[$col] : $col ; @@ -550,7 +550,7 @@ class parseCSV { $current = ''; $was_enclosed = false; $col++; - + // end of row if ( $ch == "\n" || $ch == "\r" ) { if ( $this->_validate_offset($row_count) && $this->_validate_row_conditions($row, $this->conditions) ) { @@ -575,7 +575,7 @@ class parseCSV { } if ( $ch == "\r" && $nch == "\n" ) $i++; } - + // append character to current field } else { $current .= $ch; @@ -599,7 +599,7 @@ class parseCSV { } return $rows; } - + /** * Create CSV data from array * @param data 2D array with data @@ -614,10 +614,10 @@ class parseCSV { if ( !is_array($data) || empty($data) ) $data = &$this->data; if ( !is_array($fields) || empty($fields) ) $fields = &$this->titles; if ( $delimiter === null ) $delimiter = $this->delimiter; - + $string = ( $is_php ) ? "".$this->linefeed : '' ; $entry = array(); - + // create heading if ( $this->heading && !$append && !empty($fields) ) { foreach( $fields as $key => $value ) { @@ -626,7 +626,7 @@ class parseCSV { $string .= implode($delimiter, $entry).$this->linefeed; $entry = array(); } - + // create data foreach( $data as $key => $row ) { foreach( $row as $field => $value ) { @@ -635,10 +635,10 @@ class parseCSV { $string .= implode($delimiter, $entry).$this->linefeed; $entry = array(); } - + return $string; } - + /** * Load local file or string * @param input local CSV file @@ -666,16 +666,16 @@ class parseCSV { } return false; } - - + + // ============================================== // ----- [ Internal Functions ] ----------------- // ============================================== - + /** * Validate a row against specified conditions * @param row array with values from a row - * @param conditions specified conditions that the row must match + * @param conditions specified conditions that the row must match * @return true of false */ function _validate_row_conditions ($row = array(), $conditions = null) { @@ -701,11 +701,11 @@ class parseCSV { } return false; } - + /** * Validate a row against a single condition * @param row array with values from a row - * @param condition specified condition that the row must match + * @param condition specified condition that the row must match * @return true of false */ function _validate_row_condition ($row, $condition) { @@ -761,7 +761,7 @@ class parseCSV { } return '1'; } - + /** * Validates if the row is within the offset or not if sorting is disabled * @param current_row the current row number being processed @@ -771,7 +771,7 @@ class parseCSV { if ( $this->sort_by === null && $this->offset !== null && $current_row < $this->offset ) return false; return true; } - + /** * Enclose values if needed * - only used by unparse() @@ -789,7 +789,7 @@ class parseCSV { } return $value; } - + /** * Check file data * @param file local filename @@ -802,8 +802,8 @@ class parseCSV { } return true; } - - + + /** * Check if passed info might be delimiter * - only used by find_delimiter() @@ -834,7 +834,7 @@ class parseCSV { } else return false; } } - + /** * Read local file * @param file local filename @@ -867,7 +867,7 @@ class parseCSV { } return false; } - + } ?> \ No newline at end of file From 8ba88c582d1e01f9e77f8c4c01b9497b066e0e3a Mon Sep 17 00:00:00 2001 From: William Knauss Date: Fri, 9 May 2014 21:31:22 -0400 Subject: [PATCH 21/40] removed documentation whitespace --- parsecsv.lib.php | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index c2a54d7..05d83a9 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -3,24 +3,15 @@ class parseCSV { /* - Class: parseCSV v0.4.3 beta https://github.com/jimeh/php-parsecsv - Fully conforms to the specifications lined out on wikipedia: - http://en.wikipedia.org/wiki/Comma-separated_values Based on the concept of Ming Hong Ng's CsvFileParser class: - - - - - - - - Copyright (c) 2007 Jim Myhrberg (jim@zydev.info). Permission is hereby granted, free of charge, to any person obtaining a copy @@ -41,8 +32,6 @@ class parseCSV { OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Code Examples ---------------- # general usage @@ -79,8 +68,6 @@ class parseCSV { $csv = new parseCSV(); $csv->output (true, 'movies.csv', $array); ---------------- - - */ From 46b42776e4b3d60edb99a62925614bac7edf0b7d Mon Sep 17 00:00:00 2001 From: William Knauss Date: Fri, 9 May 2014 21:45:03 -0400 Subject: [PATCH 22/40] Properties documentation --- parsecsv.lib.php | 233 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 200 insertions(+), 33 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 05d83a9..11de48b 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -70,93 +70,260 @@ class parseCSV { ---------------- */ - /** * Configuration * - set these options with $object->var_name = 'value'; */ - # use first line/entry as field names + /** + * Heading + * Use first line/entry as field names + * + * @access public + * @var bool + */ public $heading = true; - # override field names + /** + * Fields + * Override field names + * + * @access public + * @var array + */ public $fields = array(); - # sort entries by this field + /** + * Sort By + * Sort csv by this field + * + * @access public + * @var string + */ public $sort_by = null; + + /** + * Sort Reverse + * Reverse the sort function + * + * @access public + * @var bool + */ public $sort_reverse = false; - # sort behavior passed to ksort/krsort functions - # regular = SORT_REGULAR - # numeric = SORT_NUMERIC - # string = SORT_STRING + /** + * Sort Type + * Sort behavior passed to sort methods + * + * regular = SORT_REGULAR + * numeric = SORT_NUMERIC + * string = SORT_STRING + * + * @access public + * @var string + */ public $sort_type = null; - # delimiter (comma) and enclosure (double quote) + /** + * Delimiter + * Delimiter character + * + * @access public + * @var string + */ public $delimiter = ','; + + /** + * Enclosure + * Enclosure character + * + * @access public + * @var string + */ public $enclosure = '"'; - # basic SQL-like conditions for row matching + /** + * Conditions + * Basic SQL-Like conditions for row matching + * + * @access public + * @var string + */ public $conditions = null; - # number of rows to ignore from beginning of data + /** + * Offset + * Number of rows to ignore from beginning of data + * + * @access public + * @var int + */ public $offset = null; - # limits the number of returned rows to specified amount + /** + * Limit + * Limits the number of returned rows to the specified amount + * + * @access public + * @var int + */ public $limit = null; - # number of rows to analyze when attempting to auto-detect delimiter + /** + * Auto Depth + * Number of rows to analyze when attempting to auto-detect delimiter + * + * @access public + * @var int + */ public $auto_depth = 15; - # characters to ignore when attempting to auto-detect delimiter + /** + * Auto Non Charts + * Characters that should be ignored when attempting to auto-detect delimiter + * + * @access public + * @var string + */ public $auto_non_chars = "a-zA-Z0-9\n\r"; - # preferred delimiter characters, only used when all filtering method - # returns multiple possible delimiters (happens very rarely) + /** + * Auto Preferred + * preferred delimiter characters, only used when all filtering method + * returns multiple possible delimiters (happens very rarely) + * + * @access public + * @var string + */ public $auto_preferred = ",;\t.:|"; - # character encoding options + /** + * Convert Encoding + * Should we convert the csv encoding? + * + * @access public + * @var bool + */ public $convert_encoding = false; + + /** + * Input Encoding + * Set the input encoding + * + * @access public + * @var string + */ public $input_encoding = 'ISO-8859-1'; + + /** + * Output Encoding + * Set the output encoding + * + * @access public + * @var string + */ public $output_encoding = 'ISO-8859-1'; - # used by unparse(), save(), and output() functions + /** + * Linefeed + * Line feed characters used by unparse, save, and output methods + * + * @access public + * @var string + */ public $linefeed = "\r\n"; - # only used by output() function + /** + * Output Delimiter + * Sets the output delimiter used by the output method + * + * @access public + * @var string + */ public $output_delimiter = ','; + + /** + * Output filename + * Sets the output filename + * + * @access public + * @var string + */ public $output_filename = 'data.csv'; - # keep raw file data in memory after successful parsing (useful for debugging) + /** + * Keep File Data + * keep raw file data in memory after successful parsing (useful for debugging) + * + * @access public + * @var bool + */ public $keep_file_data = false; /** * Internal variables */ - # current file + /** + * File + * Current Filename + * + * @access public + * @var string + */ public $file; - # loaded file contents + /** + * File Data + * Current file data + * + * @access public + * @var string + */ public $file_data; - # error while parsing input data - # 0 = No errors found. Everything should be fine :) - # 1 = Hopefully correctable syntax error was found. - # 2 = Enclosure character (double quote by default) - # was found in non-enclosed field. This means - # the file is either corrupt, or does not - # standard CSV formatting. Please validate - # the parsed data yourself. + /** + * Error + * Contains the error code if one occured + * + * 0 = No errors found. Everything should be fine :) + * 1 = Hopefully correctable syntax error was found. + * 2 = Enclosure character (double quote by default) + * was found in non-enclosed field. This means + * the file is either corrupt, or does not + * standard CSV formatting. Please validate + * the parsed data yourself. + * + * @access public + * @var int + */ public $error = 0; - # detailed error info + /** + * Error Information + * Detailed error information + * + * @access public + * @var array + */ public $error_info = array(); - # array of field values in data parsed + /** + * Titles + * CSV titles if they exists + * + * @access public + * @var array + */ public $titles = array(); - # two dimentional array of CSV data + /** + * Data + * Two dimensional array of CSV data + * + * @access public + * @var array + */ public $data = array(); From 28967dea203c6d2a71e8d0cd43189c54009c463e Mon Sep 17 00:00:00 2001 From: William Knauss Date: Fri, 9 May 2014 21:46:11 -0400 Subject: [PATCH 23/40] extra space --- parsecsv.lib.php | 1 - 1 file changed, 1 deletion(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 11de48b..f90c377 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -492,7 +492,6 @@ class parseCSV { * @return [string] */ public function auto ($file = null, $parse = true, $search_depth = null, $preferred = null, $enclosure = null) { - if ( $file === null ) { $file = $this->file; } From 8c300568bb8ea2fa82e79b0818154665e22e605d Mon Sep 17 00:00:00 2001 From: William Knauss Date: Fri, 9 May 2014 21:54:09 -0400 Subject: [PATCH 24/40] parse_string readability --- parsecsv.lib.php | 107 ++++++++++++++++++++++++++++++----------------- 1 file changed, 68 insertions(+), 39 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index f90c377..7d15f13 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -617,64 +617,73 @@ class parseCSV { * @param data CSV string * @return 2D array with CSV data, or false on failure */ - function parse_string ($data = null) { + public function parse_string ($data = null) { if ( empty($data) ) { if ( $this->_check_data() ) { $data = &$this->file_data; - } else return false; + } + else { + return false; + } } $white_spaces = str_replace($this->delimiter, '', " \t\x0B\0"); - $rows = array(); - $row = array(); - $row_count = 0; - $current = ''; - $head = ( !empty($this->fields) ) ? $this->fields : array() ; - $col = 0; - $enclosed = false; + $rows = array(); + $row = array(); + $row_count = 0; + $current = ''; + $head = ( !empty($this->fields) ) ? $this->fields : array() ; + $col = 0; + $enclosed = false; $was_enclosed = false; - $strlen = strlen($data); + $strlen = strlen($data); // walk through each character for ( $i=0; $i < $strlen; $i++ ) { - $ch = $data{$i}; + $ch = $data{$i}; $nch = ( isset($data{$i+1}) ) ? $data{$i+1} : false ; $pch = ( isset($data{$i-1}) ) ? $data{$i-1} : false ; // open/close quotes, and inline quotes if ( $ch == $this->enclosure ) { if ( !$enclosed ) { - if ( ltrim($current, $white_spaces) == '' ) { + if ( ltrim($current,$white_spaces) == '' ) { $enclosed = true; $was_enclosed = true; - } else { + } + else { $this->error = 2; - $error_row = count($rows) + 1; - $error_col = $col + 1; + $error_row = count($rows) + 1; + $error_col = $col + 1; if ( !isset($this->error_info[$error_row.'-'.$error_col]) ) { $this->error_info[$error_row.'-'.$error_col] = array( - 'type' => 2, - 'info' => 'Syntax error found on row '.$error_row.'. Non-enclosed fields can not contain double-quotes.', - 'row' => $error_row, - 'field' => $error_col, + 'type' => 2, + 'info' => 'Syntax error found on row '.$error_row.'. Non-enclosed fields can not contain double-quotes.', + 'row' => $error_row, + 'field' => $error_col, 'field_name' => (!empty($head[$col])) ? $head[$col] : null, ); } + $current .= $ch; } - } elseif ($nch == $this->enclosure) { + } + elseif ($nch == $this->enclosure) { $current .= $ch; $i++; - } elseif ( $nch != $this->delimiter && $nch != "\r" && $nch != "\n" ) { - for ( $x=($i+1); isset($data{$x}) && ltrim($data{$x}, $white_spaces) == ''; $x++ ) {} + } + elseif ( $nch != $this->delimiter && $nch != "\r" && $nch != "\n" ) { + #for ( $x=($i+1); isset($data{$x}) && ltrim($data{$x}, $white_spaces) == ''; $x++ ) {} //this line does nothing? if ( $data{$x} == $this->delimiter ) { $enclosed = false; - $i = $x; - } else { + $i = $x; + } + else { if ( $this->error < 1 ) { $this->error = 1; } + $error_row = count($rows) + 1; $error_col = $col + 1; if ( !isset($this->error_info[$error_row.'-'.$error_col]) ) { @@ -684,24 +693,27 @@ class parseCSV { 'Syntax error found on row '.(count($rows) + 1).'. '. 'A single double-quote was found within an enclosed string. '. 'Enclosed double-quotes must be escaped with a second double-quote.', - 'row' => count($rows) + 1, - 'field' => $col + 1, + 'row' => count($rows) + 1, + 'field' => $col + 1, 'field_name' => (!empty($head[$col])) ? $head[$col] : null, ); } + $current .= $ch; $enclosed = false; } - } else { + } + else { $enclosed = false; } // end of field/row - } elseif ( ($ch == $this->delimiter || $ch == "\n" || $ch == "\r") && !$enclosed ) { - $key = ( !empty($head[$col]) ) ? $head[$col] : $col ; - $row[$key] = ( $was_enclosed ) ? $current : trim($current) ; - $current = ''; - $was_enclosed = false; + } + elseif ( ($ch == $this->delimiter || $ch == "\n" || $ch == "\r") && !$enclosed ) { + $key = ( !empty($head[$col]) ) ? $head[$col] : $col ; + $row[$key] = ( $was_enclosed ) ? $current : trim($current) ; + $current = ''; + $was_enclosed = false; $col++; // end of row @@ -709,47 +721,64 @@ class parseCSV { if ( $this->_validate_offset($row_count) && $this->_validate_row_conditions($row, $this->conditions) ) { if ( $this->heading && empty($head) ) { $head = $row; - } elseif ( empty($this->fields) || (!empty($this->fields) && (($this->heading && $row_count > 0) || !$this->heading)) ) { + } + elseif ( empty($this->fields) || (!empty($this->fields) && (($this->heading && $row_count > 0) || !$this->heading)) ) { if ( !empty($this->sort_by) && !empty($row[$this->sort_by]) ) { if ( isset($rows[$row[$this->sort_by]]) ) { $rows[$row[$this->sort_by].'_0'] = &$rows[$row[$this->sort_by]]; unset($rows[$row[$this->sort_by]]); - for ( $sn=1; isset($rows[$row[$this->sort_by].'_'.$sn]); $sn++ ) {} + #for ( $sn=1; isset($rows[$row[$this->sort_by].'_'.$sn]); $sn++ ) {} //this line does nothing $rows[$row[$this->sort_by].'_'.$sn] = $row; - } else $rows[$row[$this->sort_by]] = $row; - } else $rows[] = $row; + } + else $rows[$row[$this->sort_by]] = $row; + } + else { + $rows[] = $row; + } } } + $row = array(); $col = 0; $row_count++; + if ( $this->sort_by === null && $this->limit !== null && count($rows) == $this->limit ) { $i = $strlen; } - if ( $ch == "\r" && $nch == "\n" ) $i++; + + if ( $ch == "\r" && $nch == "\n" ) { + $i++; + } } // append character to current field - } else { + } + else { $current .= $ch; } } + $this->titles = $head; if ( !empty($this->sort_by) ) { $sort_type = SORT_REGULAR; if ( $this->sort_type == 'numeric' ) { $sort_type = SORT_NUMERIC; - } elseif ( $this->sort_type == 'string' ) { + } + elseif ( $this->sort_type == 'string' ) { $sort_type = SORT_STRING; } + ( $this->sort_reverse ) ? krsort($rows, $sort_type) : ksort($rows, $sort_type) ; + if ( $this->offset !== null || $this->limit !== null ) { $rows = array_slice($rows, ($this->offset === null ? 0 : $this->offset) , $this->limit, true); } } + if ( !$this->keep_file_data ) { $this->file_data = null; } + return $rows; } From 178699580ea45184fb928adb49d43807d829bc00 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Fri, 9 May 2014 21:55:36 -0400 Subject: [PATCH 25/40] unparse readability --- parsecsv.lib.php | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 7d15f13..5d803bb 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -792,19 +792,28 @@ class parseCSV { * @param delimiter field delimiter to use * @return CSV data (text string) */ - function unparse ( $data = array(), $fields = array(), $append = false , $is_php = false, $delimiter = null) { - if ( !is_array($data) || empty($data) ) $data = &$this->data; - if ( !is_array($fields) || empty($fields) ) $fields = &$this->titles; - if ( $delimiter === null ) $delimiter = $this->delimiter; + public function unparse ( $data = array(), $fields = array(), $append = false , $is_php = false, $delimiter = null) { + if ( !is_array($data) || empty($data) ) { + $data = &$this->data; + } + + if ( !is_array($fields) || empty($fields) ) { + $fields = &$this->titles; + } + + if ( $delimiter === null ) { + $delimiter = $this->delimiter; + } $string = ( $is_php ) ? "".$this->linefeed : '' ; - $entry = array(); + $entry = array(); // create heading if ( $this->heading && !$append && !empty($fields) ) { foreach( $fields as $key => $value ) { $entry[] = $this->_enclose_value($value); } + $string .= implode($delimiter, $entry).$this->linefeed; $entry = array(); } @@ -814,8 +823,9 @@ class parseCSV { foreach( $row as $field => $value ) { $entry[] = $this->_enclose_value($value); } + $string .= implode($delimiter, $entry).$this->linefeed; - $entry = array(); + $entry = array(); } return $string; From 531cc66a5e8cd8b3740b112571422294f3fbe6e6 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Fri, 9 May 2014 21:55:54 -0400 Subject: [PATCH 26/40] unparse readability --- parsecsv.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 5d803bb..203604f 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -815,7 +815,7 @@ class parseCSV { } $string .= implode($delimiter, $entry).$this->linefeed; - $entry = array(); + $entry = array(); } // create data From af5d7cf70dea4b65b8af3bfba9defc191b9fb208 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Fri, 9 May 2014 21:57:17 -0400 Subject: [PATCH 27/40] load_data readability --- parsecsv.lib.php | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 203604f..397ffe6 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -836,26 +836,41 @@ class parseCSV { * @param input local CSV file * @return true or false */ - function load_data ($input = null) { + public function load_data ($input = null) { $data = null; $file = null; + if ( $input === null ) { $file = $this->file; - } elseif ( file_exists($input) ) { + } + elseif ( file_exists($input) ) { $file = $input; - } else { + } + else { $data = $input; } + if ( !empty($data) || $data = $this->_rfile($file) ) { - if ( $this->file != $file ) $this->file = $file; + if ( $this->file != $file ) { + $this->file = $file; + } + if ( preg_match('/\.php$/i', $file) && preg_match('/<\?.*?\?>(.*)/ims', $data, $strip) ) { $data = ltrim($strip[1]); } - if ( $this->convert_encoding ) $data = iconv($this->input_encoding, $this->output_encoding, $data); - if ( substr($data, -1) != "\n" ) $data .= "\n"; + + if ( $this->convert_encoding ) { + $data = iconv($this->input_encoding, $this->output_encoding, $data); + } + + if ( substr($data, -1) != "\n" ) { + $data .= "\n"; + } + $this->file_data = &$data; return true; } + return false; } From 0457fbfba2ecd0a04702315ae291bc9348982bd6 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Tue, 13 May 2014 18:22:18 -0400 Subject: [PATCH 28/40] removed back comments --- parsecsv.lib.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 397ffe6..f457bf4 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -674,7 +674,7 @@ class parseCSV { $i++; } elseif ( $nch != $this->delimiter && $nch != "\r" && $nch != "\n" ) { - #for ( $x=($i+1); isset($data{$x}) && ltrim($data{$x}, $white_spaces) == ''; $x++ ) {} //this line does nothing? + for ( $x=($i+1); isset($data{$x}) && ltrim($data{$x}, $white_spaces) == ''; $x++ ) {} if ( $data{$x} == $this->delimiter ) { $enclosed = false; $i = $x; @@ -727,7 +727,7 @@ class parseCSV { if ( isset($rows[$row[$this->sort_by]]) ) { $rows[$row[$this->sort_by].'_0'] = &$rows[$row[$this->sort_by]]; unset($rows[$row[$this->sort_by]]); - #for ( $sn=1; isset($rows[$row[$this->sort_by].'_'.$sn]); $sn++ ) {} //this line does nothing + for ( $sn=1; isset($rows[$row[$this->sort_by].'_'.$sn]); $sn++ ) {} $rows[$row[$this->sort_by].'_'.$sn] = $row; } else $rows[$row[$this->sort_by]] = $row; @@ -893,12 +893,15 @@ class parseCSV { foreach( $conditions as $key => $value ) { if ( strpos($value, ' AND ') !== false ) { $value = explode(' AND ', $value); - $and = ''; + $and = ''; + foreach( $value as $k => $v ) { $and .= $this->_validate_row_condition($row, $v); } + $or .= (strpos($and, '0') !== false) ? '0' : '1' ; - } else { + } + else { $or .= $this->_validate_row_condition($row, $value); } } From 0f39cfa75ad79ef1ff7e92f8017991a93d426926 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Tue, 13 May 2014 18:23:27 -0400 Subject: [PATCH 29/40] _wfile readability --- parsecsv.lib.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index f457bf4..4ff7140 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -1062,6 +1062,8 @@ class parseCSV { /** * Write to local file + * + * @access public * @param file local filename * @param string data to write to file * @param mode fopen() mode @@ -1071,13 +1073,15 @@ class parseCSV { function _wfile ($file, $string = '', $mode = 'wb', $lock = 2) { if ( $fp = fopen($file, $mode) ) { flock($fp, $lock); - $re = fwrite($fp, $string); + $re = fwrite($fp, $string); $re2 = fclose($fp); - if ( $re != false && $re2 != false ) return true; + if ( $re != false && $re2 != false ) { + return true; + } } + return false; } - } ?> \ No newline at end of file From 2ab7625bb56d338f4a5f5c2a7c5f096c9890d5cd Mon Sep 17 00:00:00 2001 From: William Knauss Date: Tue, 13 May 2014 18:24:31 -0400 Subject: [PATCH 30/40] _rfile readability --- parsecsv.lib.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 4ff7140..eebf887 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -1047,16 +1047,19 @@ class parseCSV { /** * Read local file + * + * @access public * @param file local filename * @return Data from file, or false on failure */ - function _rfile ($file = null) { + public function _rfile ($file = null) { if ( is_readable($file) ) { if ( !($fh = fopen($file, 'r')) ) return false; $data = fread($fh, filesize($file)); fclose($fh); return $data; } + return false; } @@ -1068,9 +1071,10 @@ class parseCSV { * @param string data to write to file * @param mode fopen() mode * @param lock flock() mode + * * @return true or false */ - function _wfile ($file, $string = '', $mode = 'wb', $lock = 2) { + public function _wfile ($file, $string = '', $mode = 'wb', $lock = 2) { if ( $fp = fopen($file, $mode) ) { flock($fp, $lock); $re = fwrite($fp, $string); From ecbb0736f1691d671d437f961c10b143112314c8 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Tue, 13 May 2014 18:56:26 -0400 Subject: [PATCH 31/40] more changes --- parsecsv.lib.php | 44 +++++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index eebf887..cbb579e 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -1013,35 +1013,49 @@ class parseCSV { return true; } - /** * Check if passed info might be delimiter - * - only used by find_delimiter() - * @return special string used for delimiter selection, or false + * Only used by find_delimiter + * + * @access public + * @param [type] $char [description] + * @param [type] $array [description] + * @param [type] $depth [description] + * @param [type] $preferred [description] + * + * @return special string used for delimiter selection, or false */ - function _check_count ($char, $array, $depth, $preferred) { + public function _check_count ($char, $array, $depth, $preferred) { if ( $depth == count($array) ) { - $first = null; - $equal = null; + $first = null; + $equal = null; $almost = false; foreach( $array as $key => $value ) { if ( $first == null ) { $first = $value; - } elseif ( $value == $first && $equal !== false) { + } + elseif ( $value == $first && $equal !== false) { $equal = true; - } elseif ( $value == $first+1 && $equal !== false ) { + } + elseif ( $value == $first+1 && $equal !== false ) { $equal = true; $almost = true; - } else { + } + else { $equal = false; } } + if ( $equal ) { $match = ( $almost ) ? 2 : 1 ; - $pref = strpos($preferred, $char); - $pref = ( $pref !== false ) ? str_pad($pref, 3, '0', STR_PAD_LEFT) : '999' ; + $pref = strpos($preferred, $char); + $pref = ( $pref !== false ) ? str_pad($pref, 3, '0', STR_PAD_LEFT) : '999' ; + return $pref.$match.'.'.(99999 - str_pad($first, 5, '0', STR_PAD_LEFT)); - } else return false; + } + else { + return false; + } } } @@ -1050,11 +1064,15 @@ class parseCSV { * * @access public * @param file local filename + * * @return Data from file, or false on failure */ public function _rfile ($file = null) { if ( is_readable($file) ) { - if ( !($fh = fopen($file, 'r')) ) return false; + if ( !($fh = fopen($file, 'r')) ) { + return false; + } + $data = fread($fh, filesize($file)); fclose($fh); return $data; From 61d1c27eac5b9a762f2bf443ff527f59ee9da556 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Tue, 13 May 2014 21:04:25 -0400 Subject: [PATCH 32/40] _check_data readability --- parsecsv.lib.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index cbb579e..fbd05d1 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -1002,14 +1002,19 @@ class parseCSV { /** * Check file data + * + * @access public * @param file local filename + * * @return true or false */ - function _check_data ($file = null) { + public function _check_data ($file = null) { if ( empty($this->file_data) ) { if ( $file === null ) $file = $this->file; + return $this->load_data($file); } + return true; } From 9b6dbd98492250abc6891812a7a6aa3f065081c6 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Tue, 13 May 2014 21:05:11 -0400 Subject: [PATCH 33/40] _enclose_value readability --- parsecsv.lib.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index fbd05d1..57bc098 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -985,10 +985,13 @@ class parseCSV { /** * Enclose values if needed * - only used by unparse() - * @param value string to process - * @return Processed value + * + * @access public + * @param value string to process + * + * @return Processed value */ - function _enclose_value ($value = null) { + public function _enclose_value ($value = null) { if ( $value !== null && $value != '' ) { $delimiter = preg_quote($this->delimiter, '/'); $enclosure = preg_quote($this->enclosure, '/'); @@ -997,6 +1000,7 @@ class parseCSV { $value = $this->enclosure.$value.$this->enclosure; } } + return $value; } From 75d7d51a9c781364e769a57baec7ea5f36644f65 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Tue, 13 May 2014 21:05:53 -0400 Subject: [PATCH 34/40] _validate_offset readability --- parsecsv.lib.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 57bc098..72e764d 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -974,11 +974,17 @@ class parseCSV { /** * Validates if the row is within the offset or not if sorting is disabled + * + * @access public * @param current_row the current row number being processed + * * @return true of false */ - function _validate_offset ($current_row) { - if ( $this->sort_by === null && $this->offset !== null && $current_row < $this->offset ) return false; + public function _validate_offset ($current_row) { + if ( $this->sort_by === null && $this->offset !== null && $current_row < $this->offset ) { + return false; + } + return true; } From 89a2817765d8d6fc6d3d847ce52e61a9dca9f843 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Tue, 13 May 2014 21:19:44 -0400 Subject: [PATCH 35/40] _validate_row_condition readability --- parsecsv.lib.php | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 72e764d..fee4edc 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -914,11 +914,13 @@ class parseCSV { /** * Validate a row against a single condition + * * @param row array with values from a row * @param condition specified condition that the row must match + * * @return true of false */ - function _validate_row_condition ($row, $condition) { + public function _validate_row_condition ($row, $condition) { $operators = array( '=', 'equals', 'is', '!=', 'is not', @@ -929,15 +931,20 @@ class parseCSV { 'contains', 'does not contain', ); + $operators_regex = array(); + foreach( $operators as $value ) { $operators_regex[] = preg_quote($value, '/'); } + $operators_regex = implode('|', $operators_regex); + if ( preg_match('/^(.+) ('.$operators_regex.') (.+)$/i', trim($condition), $capture) ) { $field = $capture[1]; - $op = $capture[2]; + $op = $capture[2]; $value = $capture[3]; + if ( preg_match('/^([\'\"]{1})(.*)([\'\"]{1})$/i', $value, $capture) ) { if ( $capture[1] == $capture[3] ) { $value = $capture[2]; @@ -947,28 +954,38 @@ class parseCSV { $value = stripslashes($value); } } + if ( array_key_exists($field, $row) ) { if ( ($op == '=' || $op == 'equals' || $op == 'is') && $row[$field] == $value ) { return '1'; - } elseif ( ($op == '!=' || $op == 'is not') && $row[$field] != $value ) { + } + elseif ( ($op == '!=' || $op == 'is not') && $row[$field] != $value ) { return '1'; - } elseif ( ($op == '<' || $op == 'is less than' ) && $row[$field] < $value ) { + } + elseif ( ($op == '<' || $op == 'is less than' ) && $row[$field] < $value ) { return '1'; - } elseif ( ($op == '>' || $op == 'is greater than') && $row[$field] > $value ) { + } + elseif ( ($op == '>' || $op == 'is greater than') && $row[$field] > $value ) { return '1'; - } elseif ( ($op == '<=' || $op == 'is less than or equals' ) && $row[$field] <= $value ) { + } + elseif ( ($op == '<=' || $op == 'is less than or equals' ) && $row[$field] <= $value ) { return '1'; - } elseif ( ($op == '>=' || $op == 'is greater than or equals') && $row[$field] >= $value ) { + } + elseif ( ($op == '>=' || $op == 'is greater than or equals') && $row[$field] >= $value ) { return '1'; - } elseif ( $op == 'contains' && preg_match('/'.preg_quote($value, '/').'/i', $row[$field]) ) { + } + elseif ( $op == 'contains' && preg_match('/'.preg_quote($value, '/').'/i', $row[$field]) ) { return '1'; - } elseif ( $op == 'does not contain' && !preg_match('/'.preg_quote($value, '/').'/i', $row[$field]) ) { + } + elseif ( $op == 'does not contain' && !preg_match('/'.preg_quote($value, '/').'/i', $row[$field]) ) { return '1'; - } else { + } + else { return '0'; } } } + return '1'; } From 9a8bd77eb8699bb534234de18e6ea284d306ab75 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Tue, 13 May 2014 21:21:04 -0400 Subject: [PATCH 36/40] forgot access flag --- parsecsv.lib.php | 1 + 1 file changed, 1 insertion(+) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index fee4edc..5328cff 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -915,6 +915,7 @@ class parseCSV { /** * Validate a row against a single condition * + * @access public * @param row array with values from a row * @param condition specified condition that the row must match * From dea1b453eb99c51e598c1bf8444f126a0b571dfe Mon Sep 17 00:00:00 2001 From: William Knauss Date: Tue, 13 May 2014 21:21:58 -0400 Subject: [PATCH 37/40] _validate_row_conditions readability --- parsecsv.lib.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 5328cff..afe9106 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -881,11 +881,14 @@ class parseCSV { /** * Validate a row against specified conditions + * + * @access public * @param row array with values from a row * @param conditions specified conditions that the row must match + * * @return true of false */ - function _validate_row_conditions ($row = array(), $conditions = null) { + public function _validate_row_conditions ($row = array(), $conditions = null) { if ( !empty($row) ) { if ( !empty($conditions) ) { $conditions = (strpos($conditions, ' OR ') !== false) ? explode(' OR ', $conditions) : array($conditions) ; @@ -905,10 +908,13 @@ class parseCSV { $or .= $this->_validate_row_condition($row, $value); } } + return (strpos($or, '1') !== false) ? true : false ; } + return true; } + return false; } From a274874084f6dcaa5d2200fa247fa65fd83b7a34 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Tue, 13 May 2014 21:23:23 -0400 Subject: [PATCH 38/40] documenation changes --- parsecsv.lib.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index afe9106..9e6373c 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -370,6 +370,7 @@ class parseCSV { * @param [integer] offset Number of rows to ignore from the beginning of the data * @param [integer] limit Limits the number of returned rows to specified amount * @param [string] conditions Basic SQL-like conditions for row matching + * * @return [bool] */ public function parse ($input = null, $offset = null, $limit = null, $conditions = null) { @@ -415,6 +416,7 @@ class parseCSV { * @param [array] $data 2D array of data * @param [bool] $append Append current data to end of target CSV, if file exists * @param [array] $fields Field names + * * @return [bool] */ public function save ($file = null, $data = array(), $append = false, $fields = array()) { @@ -437,6 +439,7 @@ class parseCSV { * @param [array] $data 2D array with data * @param [array] $fields Field names * @param [type] $delimiter delimiter used to separate data + * * @return [string] */ public function output ($filename = null, $data = array(), $fields = array(), $delimiter = null) { @@ -489,6 +492,7 @@ class parseCSV { * @param [int] $search_depth Number of rows to analyze * @param [string] $preferred Preferred delimiter characters * @param [string] $enclosure Enclosure character, default is double quote ("). + * * @return [string] */ public function auto ($file = null, $parse = true, $search_depth = null, $preferred = null, $enclosure = null) { @@ -597,7 +601,9 @@ class parseCSV { * Read file to string and call parse_string() * * @access public + * * @param [string] $file Local CSV file + * * @return [array|bool] */ public function parse_file ($file = null) { @@ -614,7 +620,10 @@ class parseCSV { /** * Parse CSV strings to arrays + * + * @access public * @param data CSV string + * * @return 2D array with CSV data, or false on failure */ public function parse_string ($data = null) { @@ -784,12 +793,15 @@ class parseCSV { /** * Create CSV data from array + * + * @access public * @param data 2D array with data * @param fields field names * @param append if true, field names will not be output * @param is_php if a php die() call should be put on the first * line of the file, this is later ignored when read. * @param delimiter field delimiter to use + * * @return CSV data (text string) */ public function unparse ( $data = array(), $fields = array(), $append = false , $is_php = false, $delimiter = null) { @@ -833,7 +845,10 @@ class parseCSV { /** * Load local file or string + * + * @access public * @param input local CSV file + * * @return true or false */ public function load_data ($input = null) { From 7e46cc193abb85c0abc1df8e64cdc7d950022925 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Tue, 13 May 2014 21:23:53 -0400 Subject: [PATCH 39/40] line feed should only be \r --- parsecsv.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 9e6373c..03dd9ec 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -231,7 +231,7 @@ class parseCSV { * @access public * @var string */ - public $linefeed = "\r\n"; + public $linefeed = "\r"; /** * Output Delimiter From 88ad81f061ea7a767d0baa350c4e939d7b925b22 Mon Sep 17 00:00:00 2001 From: William Knauss Date: Tue, 13 May 2014 21:26:06 -0400 Subject: [PATCH 40/40] removed end of php line its not really needed --- parsecsv.lib.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/parsecsv.lib.php b/parsecsv.lib.php index 03dd9ec..726136b 100644 --- a/parsecsv.lib.php +++ b/parsecsv.lib.php @@ -1159,5 +1159,3 @@ class parseCSV { return false; } } - -?> \ No newline at end of file