function _parseRecord($rec) { $r = new MarcRecord(); $this->_recnum += 1; $err = $r->setLeader(substr($rec, 0, 24), $this->lenient); if ($err) { return $this->_error("Invalid Leader: " . $err); } $base = $r->baseAddr; $entries = $this->_parseDirectory(substr($rec, 24, $base - 24)); if (is_a($entries, 'MarcParseError')) { return $entries; } foreach ($entries as $e) { $f = substr($rec, $base + $e['start'], $e['length']); $field = $this->_parseField($e['tag'], $f); if (is_a($field, 'MarcParseError')) { return $field; } array_push($r->fields, $field); } return $r; }