Функции YAZ
PHP Manual

yaz_record

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

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

Описание

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

Функция 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'$xslfileNULL$parms);
xslt_free($processor);
$res preg_replace("'</?html[^>]*>'"''$res);
echo 
$res;

?>

Для PHP 5 нужно использовать расширение XSL вместо Sablotron XSLT.


Функции YAZ
PHP Manual