MarcReader
in package
MARC record reader class.
Tags
Table of Contents
- $data : array<string|int, mixed>
- MARC is stored in a multidimensional array resembling MARC-in-JSON specification by Ross Singer: [ 'leader' => '...', 'fields' => [ [ '001' => '12345' ], [ '245' => [ 'ind1' => '0', 'ind2' => '1', 'subfields' => [ ['a' => 'Title'], ['k' => 'Form'], ['k' => 'Another'], ['p' => 'Part'], ] ] ] ] ]
- $leader : string
- MARC leader
- $serializations : array<string|int, mixed>
- Supported serialization formats
- $warnings : array<string|int, mixed>
- Any warnings encountered when parsing a record
- __construct() : mixed
- Constructor
- getAllFields() : array<string|int, mixed>
- Return all fields as an array.
- getField() : array<string|int, mixed>|string
- Return an associative array for a data field, a string for a control field or an empty array if field does not exist
- getFieldLink() : array<string|int, mixed>
- Get linked field data from subfield 6
- getFields() : array<string|int, mixed>
- Return an associative array of fields for data fields or an array of values for control fields
- getFieldsSubfields() : array<string|int, mixed>
- Return an array of all values extracted from the specified field/subfield combination. If multiple subfields and a separator are specified, the subfields will be concatenated together in the order listed -- each entry in the array will correspond with a single MARC field. If $separator is null, the return array will contain separate entries for all subfields.
- getFilteredRecord() : MarcReader
- Return a copy of the record with the specified fields and/or subfields removed.
- getLeader() : string
- Return leader
- getLinkedField() : array<string|int, mixed>
- Return an associative array for a linked field such as 880 (Alternate Graphic Representation) or an empty array if field does not exist
- getLinkedFields() : array<string|int, mixed>
- Return an array of associative arrays for a linked field such as 880 (Alternate Graphic Representation)
- getLinkedFieldsSubfields() : array<string|int, mixed>
- Return an array of all values extracted from the specified linked field/subfield combination. If multiple subfields and a separator are specified, the subfields will be concatenated together in the order listed -- each entry in the array will correspond with a single MARC field. If $separator is null, the return array will contain separate entries for all subfields.
- getSubfield() : string
- Return first subfield with the given code in the MARC field provided by getField or getFields
- getSubfields() : array<string|int, mixed>
- Return all subfields with the given code in the MARC field provided by getField or getFields. Returns all subfields if subfieldCode is empty.
- getWarnings() : array<string|int, mixed>
- Get any warnings encountered when parsing a record
- parseLinkageField() : array<string|int, mixed>
- Parse a linkage field
- setData() : void
- Set MARC record data
- toFormat() : string
- Serialize the record
- filterSubfields() : array<string|int, mixed>
- Filter subfields
- getFilteringRulesForTag() : array<string|int, mixed>
- Get filtering rules matching a field tag
- getInternalFields() : array<string|int, mixed>
- Return fields by tag in internal format
- getInternalSubfield() : string
- Return first subfield with the given code in the internal MARC field
Properties
$data
MARC is stored in a multidimensional array resembling MARC-in-JSON specification by Ross Singer: [ 'leader' => '...', 'fields' => [ [ '001' => '12345' ], [ '245' => [ 'ind1' => '0', 'ind2' => '1', 'subfields' => [ ['a' => 'Title'], ['k' => 'Form'], ['k' => 'Another'], ['p' => 'Part'], ] ] ] ] ]
protected
array<string|int, mixed>
$data
Tags
$leader
MARC leader
protected
string
$leader
$serializations
Supported serialization formats
protected
array<string|int, mixed>
$serializations
= ['ISO2709' => \VuFind\Marc\Serialization\Iso2709::class, 'JSON' => \VuFind\Marc\Serialization\MarcInJson::class, 'MARCXML' => \VuFind\Marc\Serialization\MarcXml::class]
$warnings
Any warnings encountered when parsing a record
protected
array<string|int, mixed>
$warnings
Methods
__construct()
Constructor
public
__construct(string|array<string|int, mixed> $data) : mixed
Parameters
- $data : string|array<string|int, mixed>
-
MARC record in one of the supported formats, or an associative array with 'leader' and 'fields' in the internal format
Return values
mixed —getAllFields()
Return all fields as an array.
public
getAllFields() : array<string|int, mixed>
Control fields have the following elements:
- tag
- data
Data fields have the following elements:
- tag
- i1
- i2
- subfields
Return values
array<string|int, mixed> —getField()
Return an associative array for a data field, a string for a control field or an empty array if field does not exist
public
getField(string $fieldTag[, array<string|int, mixed> $subfieldCodes = null ]) : array<string|int, mixed>|string
Parameters
- $fieldTag : string
-
The MARC field tag to get
- $subfieldCodes : array<string|int, mixed> = null
-
The MARC subfield codes to get, or empty for all
Return values
array<string|int, mixed>|string —getFieldLink()
Get linked field data from subfield 6
public
getFieldLink(array<string|int, mixed> $field) : array<string|int, mixed>
Parameters
- $field : array<string|int, mixed>
-
Field
Return values
array<string|int, mixed> —getFields()
Return an associative array of fields for data fields or an array of values for control fields
public
getFields(string $fieldTag[, array<string|int, mixed> $subfieldCodes = null ]) : array<string|int, mixed>
Parameters
- $fieldTag : string
-
The MARC field tag to get
- $subfieldCodes : array<string|int, mixed> = null
-
The MARC subfield codes to get, or empty for all. Ignored for control fields.
Return values
array<string|int, mixed> —getFieldsSubfields()
Return an array of all values extracted from the specified field/subfield combination. If multiple subfields and a separator are specified, the subfields will be concatenated together in the order listed -- each entry in the array will correspond with a single MARC field. If $separator is null, the return array will contain separate entries for all subfields.
public
getFieldsSubfields(string $fieldTag, array<string|int, mixed> $subfieldCodes[, string $separator = ' ' ]) : array<string|int, mixed>
Parameters
- $fieldTag : string
-
The MARC field tag to get
- $subfieldCodes : array<string|int, mixed>
-
The MARC subfield codes to get
- $separator : string = ' '
-
Subfield separator string. Set to null to disable concatenation of subfields.
Return values
array<string|int, mixed> —getFilteredRecord()
Return a copy of the record with the specified fields and/or subfields removed.
public
getFilteredRecord(array<string|int, mixed> $rules) : MarcReader
Each rule can have the following elements:
tag - Tag the rule applies to (a regular expression). subfields - Subfields codes to remove (a regular expression, optional). Default is to remove all subfields (and the field).
Examples:
$result = $reader->getFilteredRecord( [ [ 'tag' => '9..' ] ] );
$result = $reader->getFilteredRecord( [ [ 'tag' => '...', 'subfields' => '0' ] ] );
Parameters
- $rules : array<string|int, mixed>
-
Array of filtering rules
Return values
MarcReader —getLeader()
Return leader
public
getLeader() : string
Return values
string —getLinkedField()
Return an associative array for a linked field such as 880 (Alternate Graphic Representation) or an empty array if field does not exist
public
getLinkedField(string $fieldTag, string $linkedFieldTag[, string $occurrence = '' ][, array<string|int, mixed> $subfieldCodes = null ]) : array<string|int, mixed>
Parameters
- $fieldTag : string
-
The MARC field that contains the linked fields
- $linkedFieldTag : string
-
The linked MARC field tag to get
- $occurrence : string = ''
-
The occurrence number to get; empty string for whatever comes first
- $subfieldCodes : array<string|int, mixed> = null
-
The MARC subfield codes to get, or empty for all
Return values
array<string|int, mixed> —getLinkedFields()
Return an array of associative arrays for a linked field such as 880 (Alternate Graphic Representation)
public
getLinkedFields(string $fieldTag, string $linkedFieldTag[, array<string|int, mixed> $subfieldCodes = null ]) : array<string|int, mixed>
Parameters
- $fieldTag : string
-
The MARC field that contains the linked fields
- $linkedFieldTag : string
-
The linked MARC field tag to get
- $subfieldCodes : array<string|int, mixed> = null
-
The MARC subfield codes to get, or empty for all
Return values
array<string|int, mixed> —getLinkedFieldsSubfields()
Return an array of all values extracted from the specified linked field/subfield combination. If multiple subfields and a separator are specified, the subfields will be concatenated together in the order listed -- each entry in the array will correspond with a single MARC field. If $separator is null, the return array will contain separate entries for all subfields.
public
getLinkedFieldsSubfields(string $fieldTag, string $linkedFieldTag, array<string|int, mixed> $subfieldCodes[, string $separator = ' ' ]) : array<string|int, mixed>
Parameters
- $fieldTag : string
-
The MARC field that contains the linked fields
- $linkedFieldTag : string
-
The linked MARC field tag to get
- $subfieldCodes : array<string|int, mixed>
-
The MARC subfield codes to get
- $separator : string = ' '
-
Subfield separator string. Set to null to disable concatenation of subfields.
Return values
array<string|int, mixed> —getSubfield()
Return first subfield with the given code in the MARC field provided by getField or getFields
public
getSubfield(array<string|int, mixed> $field, string $subfieldCode) : string
Parameters
- $field : array<string|int, mixed>
-
Result from MarcReader::getFields
- $subfieldCode : string
-
The MARC subfield code to get
Return values
string —getSubfields()
Return all subfields with the given code in the MARC field provided by getField or getFields. Returns all subfields if subfieldCode is empty.
public
getSubfields(array<string|int, mixed> $field[, string $subfieldCode = '' ]) : array<string|int, mixed>
Parameters
- $field : array<string|int, mixed>
-
Result from MarcReader::getFields
- $subfieldCode : string = ''
-
The MARC subfield code to get
Return values
array<string|int, mixed> —getWarnings()
Get any warnings encountered when parsing a record
public
getWarnings() : array<string|int, mixed>
Return values
array<string|int, mixed> —parseLinkageField()
Parse a linkage field
public
parseLinkageField(string $link) : array<string|int, mixed>
Parameters
- $link : string
-
Linkage field
Return values
array<string|int, mixed> —setData()
Set MARC record data
public
setData(string|array<string|int, mixed> $data) : void
Parameters
- $data : string|array<string|int, mixed>
-
MARC record in one of the supported formats, or an associative array with 'leader' and 'fields' in the internal format
Tags
Return values
void —toFormat()
Serialize the record
public
toFormat(string $format) : string
Parameters
- $format : string
-
Format to return (e.g. 'ISO2709' or 'MARCXML')
Tags
Return values
string —filterSubfields()
Filter subfields
protected
filterSubfields(array<string|int, mixed> $rules, array<string|int, mixed> $subfields) : array<string|int, mixed>
Parameters
- $rules : array<string|int, mixed>
-
Filtering rules
- $subfields : array<string|int, mixed>
-
Subfields
Return values
array<string|int, mixed> —getFilteringRulesForTag()
Get filtering rules matching a field tag
protected
getFilteringRulesForTag(array<string|int, mixed> $rules, string $tag) : array<string|int, mixed>
Parameters
- $rules : array<string|int, mixed>
-
Filtering rules
- $tag : string
-
Field tag
Return values
array<string|int, mixed> —getInternalFields()
Return fields by tag in internal format
protected
getInternalFields(string $tag) : array<string|int, mixed>
Parameters
- $tag : string
-
Field tag
Return values
array<string|int, mixed> —getInternalSubfield()
Return first subfield with the given code in the internal MARC field
protected
getInternalSubfield(array<string|int, mixed> $field, string $subfieldCode) : string
Parameters
- $field : array<string|int, mixed>
-
Internal MARC field
- $subfieldCode : string
-
The MARC subfield code to get