diff --git a/application/libraries/Adif_parser.php b/application/libraries/Adif_parser.php index 4725e10a..fbf99f1b 100644 --- a/application/libraries/Adif_parser.php +++ b/application/libraries/Adif_parser.php @@ -19,11 +19,10 @@ class ADIF_Parser { var $data; //the adif data - var $datasplit; // one line is one QSO in the array - var $currentarray = 0; // current place in the array var $i; //the iterator + var $current_line; //stores information about the current qso var $headers = array(); - + public function initialize() //this function locates the { @@ -109,8 +108,6 @@ class ADIF_Parser echo "Error: ADIF File Does Not Contain Any QSOs"; return 0; }; - - $this->datasplit = preg_split("//i", substr($this->data, $this->i)); return 1; } @@ -179,15 +176,23 @@ class ADIF_Parser }; return $return; } - + + //finds the next record in the file public function get_record() { - if($this->currentarray >= count($this->datasplit)) + if($this->i >= strlen($this->data)) { return array(); //return nothing }; - return $this->record_to_array($this->datasplit[$this->currentarray++]); //process and return output + $end = stripos($this->data, "", $this->i); + if($end == false) //is this the end? + { + return array(); //return nothing + }; + $record = substr($this->data, $this->i, $end-$this->i); + $this->i = $end+5; + return $this->record_to_array($record); //process and return output } public function get_header($key) @@ -199,6 +204,6 @@ class ADIF_Parser return NULL; } } - + } ?> \ No newline at end of file