VuFind-Marc API Documentation

MarcReader
in package

MARC record reader class.

Tags
category

VuFind

author

Ere Maijala ere.maijala@helsinki.fi

license

http://opensource.org/licenses/gpl-2.0.php GNU General Public License

link

Wiki

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

$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

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
throws
Exception
Return values
void

toFormat()

Serialize the record

public toFormat(string $format) : string
Parameters
$format : string

Format to return (e.g. 'ISO2709' or 'MARCXML')

Tags
throws
Exception
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

Return values
string

Search results