(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)
yaz_record — Возвращает запись
Функция 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.
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;
?>