# yaz_record

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_record — Returns a record

### Description

yaz_record ( resource `$id` , int `$pos` , string `$type` ) : string

The yaz_record() function inspects a record in the current result set at the position specified by parameter `pos`.

### Parameters

`id`

  The connection resource returned by yaz_connect().

`pos`

  The record position. Records positions in a result set are numbered 1, 2, ... $hits where $hits is the count returned by yaz_hits().

`type`

  The `type` specifies the form of the returned record.

  > Note:

  > It is the application which is responsible for actually ensuring that the records are returned from the Z39.50/SRW server in the proper format. The type given only specifies a conversion to take place on the client side (in PHP/YAZ).

  Besides conversion of the transfer record to a string/array, PHP/YAZ it is also possible to perform a character set conversion of the record. Especially for USMARC/MARC21 that is recommended since these are typically returned in the character set MARC-8 that is not supported by browsers, etc. To specify a conversion, add `; charset=`from`,` to where from is the original character set of the record and to is the resulting character set (as seen by PHP).

  `string`

    The record is returned as a string for simple display. In this mode, all MARC records are converted to a line-by-line format since ISO2709 is hardly readable. XML records and SUTRS are returned in their original format. GRS-1 are returned in a (ugly) line-by-line format.

    This format is suitable if records are to be displayed in a quick way - for debugging - or because it is not feasible to perform proper display.

  `xml`

    The record is returned as an XML string if possible. In this mode, all MARC records are converted to » MARCXML. XML records and SUTRS are returned in their original format. GRS-1 is not supported.

    This format is similar to `string` except that MARC records are converted to MARCXML

    This format is suitable if records are processed by an XML parser or XSLT processor afterwards.

  `raw`

    The record is returned as a string in its original form. This type is suitable for MARC, XML and SUTRS. It does not work for GRS-1.

    MARC records are returned as a ISO2709 string. XML and SUTRS are returned as strings.

  `syntax`

    The syntax of the record is returned as a string, i.e. `USmarc`, `GRS-1`, `XML`, etc.

  `database`

    The name of database associated with record at the position is returned as a string.

  `array`

    The record is returned as an array that reflects the GRS-1 structure. This type is suitable for MARC and GRS-1. XML, SUTRS are not supported and if the actual record is XML or SUTRS an empty string will be returned.

    The array returned consists of a list corresponding to each leaf/internal node of GRS-1. Each list item consists a sub list with first element path and data (if data is available).

    The path which is a string holds a list of each tree component (of the structured GRS-1 record) from root to leaf. Each component is a tag type, tag value pair of the form `(`type`,` value

    String tags normally has a corresponding tag type 3. MARC can also be returned as an array (they are converted to GRS-1 internally).

### Return Values

Returns the record at position `pos` or an empty string if no record exists at the given position.

If no database record exists at the given position an empty string is returned.

### Examples

Example #1 Array for GRS-1 record

Consider this GRS-1 record:

    (4,52)Robert M. Pirsig
    (4,70)
          (4,90)
                (2,7)Transworld Publishers, ltd.

This record has two nodes at root level. First element at root level is (4,52) [tag type 4, tag value 52], and has data `Robert M. Pirsig`. Second element at root level (4,70) has a subtree with a single element (4,90). (4,90) has yet another sub tree (2,7) with data `Transworld Publishers, ltd.`.

If this record is present at position $p, then

`<?php
$ar = yaz_record($id, $p, "array");
print_r($ar);
?>`
will output:

    Array
    (
        [0] => Array
            (
                [0] => (4,52)
                [1] => Robert M. Pirsig
            )
        [1] => Array
            (
                [0] => (4,70)
            )
        [2] => Array
            (
                [0] => (4,70)(4,90)
            )
        [3] => Array
            (
                [0] => (4,70)(4,90)(2,7)
                [1] => Transworld Publishers, ltd.
            )
    )

Example #2 Working with MARCXML

The following PHP snippet returns a MARC21/USMARC record as MARCXML. The original record is returned in marc-8 (unknown to most XML parsers), so we convert it to UTF-8 (which all XML parsers must support).

`<?php
$rec = yaz_record($id, $p, "xml; charset=marc-8,utf-8");
?>`

The record `$rec` can be processed with the Sablotron XSLT processor as follows:

`<?php
$xslfile = 'display.xsl';
$processor = xslt_create();
$parms = array('/_xml' => $rec);
$res = xslt_process($processor, 'arg:/_xml', $xslfile, NULL, $parms);
xslt_free($processor);
$res = preg_replace("'</?html[^>]*>'", '', $res);
echo $res;
?>`

For PHP 5 the XSL extension must be used instead of Sablotron XSLT.