Возвращает запись

# yaz_record

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

yaz_record — Возвращает запись

### Описание

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

Функция yaz_record() проверяет запись в текущем результирующем наборе на позиции, определённой параметром `pos`.

### Список параметров

`id`

  Дескриптор соединения, возвращаемый yaz_connect().

`pos`

  Позиция записи. Записи в результирующем наборе нумеруются как 1, 2, ... $hits, где $hits - число записей в результирующем наборе, которое возвращается функцией yaz_hits().

`type`

  `type` определяет форму возвращаемой записи.

  > Замечание:

  > Только приложение несёт ответственность за достоверность того, что возвращаемые записи с сервера Z39.50/SRW в надлежащем формате. Задаваемый тип только определяет преобразование, которое имеет место на стороне клиента (в PHP/YAZ).

  Помимо преобразования переданной записи в строку/массив, PHP/YAZ так же может преобразовывать кодировку записи. Особенно это актуально для форматов USMARC/MARC21, которые рекомендуется преобразовывать, поскольку они обычно возвращаются в кодировке MARC-8, которую не понимают браузеры и другие приложения. Чтобы определить преобразование, добавьте `; charset=`from`,` to, где from текущая кодировка записи и to результирующая кодировка, которая будет доступна PHP.

  `string`

    Запись возвращается в виде строки для отображения. В этом режиме все MARC-записи преобразуются в построчное представление, поскольку в формате ISO2709 их трудно прочитать. Записи XML и SUTRS возвращаются в их родном формате. GRS-1 возвращается в (безобразном) построчном представлении.

    Данный формат применим для быстрого вывода записей на экран, для отладки, или в случае, когда корректное отображение невозможно.

  `xml`

    Запись возвращается как строка XML, если это возможно. В этом режиме все MARC-записи преобразовываются в формат » MARCXML. Записи XML и SUTRS возвращаются в их родном формате. GRS-1 не поддерживается.

    Этот формат схож с `string`, за исключением того, что MARC-записи преобразуются в MARCXML.

    Данный формат применим, если запись будет передана парсеру XML или XSLT-процессору.

  `raw`

    Запись возвращается в виде строки в исходной форме. Данный тип применим для MARC, XML и SUTRS, но не работает для GRS-1.

    MARC-запись возвращается в формате ISO2709, XML и SUTRS возвращаются как строка.

  `syntax`

    Синтаксис возвращаемой записи, например `USmarc`, `GRS-1`, `XML`, и д.р.

  `database`

    Имя базы данных, сопоставленное с записью.

  `array`

    Запись возвращается в виде массива, сопоставленного со структурой GRS-1. Данный тип применим для MARC и GRS-1. XML, SUTRS не поддерживаются и, если исходная запись в формате XML или SUTRS, возвращается пустая строка.

    Возвращаемый массив состоит из списка, который соответствует каждому внутреннему узлу или конечному элементу(leaf) формата GRS-1. Каждый список состоит из подсписка, первым элементом которого будет путь и дата (если она доступна).

    Путь, представленный в виде строки, содержит список каждой компоненты дерева (для структуры записи GRS-1) от корневого элемента до конечного. Каждая компонента представлена парой тип поля и значение, в форме (`тип`, `значение`).

    Начальное поле обычно сопоставлено типу 3. MARC-записи тоже могут быть возвращены в виде массива (они конвертируются в GRS-1).

### Возвращаемые значения

Возвращает запись на позиции `pos` или пустую строку, если на заданной позиции нет записей.

Если на заданной позиции в базе данных нет записей, будет возвращена пустая строка.

### Примеры

Пример #1 Массив для записи GRS-1

Возьмём запись GRS-1, вида:

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

Данная запись содержит два узла на верхнем(корневом) уровне. Первый элемент корневого уровня (4,52) [тип 4, значение 52], и содержит данные `Robert M. Pirsig`. Второй элемент корневого уровня (4,70) содержит поддерево с единственным элементом (4,90). Элемент (4,90) в свою очередь содержит поддерево (2,7) с данными `Transworld Publishers, ltd.`.

Если данная запись находится на позиции $p, тогда скрипт

    <?php

    $ar = yaz_record($id, $p, "array");
    print_r($ar);

    ?>

выведет:

    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.
            )
    )

Пример #2 Пример работы с MARCXML

Скрипт ниже вернёт запись MARC21/USMARC в формате MARCXML. Исходная запись будет возвращена в кодировке marc-8 (неизвестной для большинства XML-парсеров), поэтому она преобразуется в UTF-8.

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

Запись `$rec` может быть обработана процессором Sablotron XSLT так:

    <?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;

    ?>

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open