PHP 大会日本 2024

yaz_record

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

yaz_record返回记录

描述

yaz_record(资源 $id, 整数 $pos, 字符串 $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 所见)。

字符串

记录作为字符串返回,用于简单显示。在此模式下,所有 MARC 记录都转换为逐行格式,因为 ISO2709 几乎无法阅读。XML 记录和 SUTRS 以其原始格式返回。GRS-1 以(丑陋的)逐行格式返回。

如果要快速显示记录(用于调试)或因为无法执行正确的显示,则此格式适用。

xml

如果可能,记录将作为 XML 字符串返回。在此模式下,所有 MARC 记录都转换为 » MARCXML。XML 记录和 SUTRS 以其原始格式返回。GRS-1 不受支持。

此格式类似于 string,只是 MARC 记录转换为 MARCXML

如果记录随后由 XML 解析器或 XSLT 处理器处理,则此格式适用。

原始

记录以其原始形式作为字符串返回。此类型适用于 MARC、XML 和 SUTRS。它不适用于 GRS-1。

MARC 记录作为 ISO2709 字符串返回。XML 和 SUTRS 作为字符串返回。

语法

记录的语法作为字符串返回,即 USmarcGRS-1XML 等。

数据库

与该位置的记录关联的数据库名称作为字符串返回。

数组

记录作为数组返回,反映了 GRS-1 结构。此类型适用于 MARC 和 GRS-1。XML、SUTRS 不受支持,如果实际记录是 XML 或 SUTRS,则将返回空字符串。

返回的数组包含对应于 GRS-1 的每个叶子/内部节点的列表。每个列表项包含一个子列表,其第一个元素为 pathdata(如果数据可用)。

作为字符串的路径保存从根到叶子的每个树组件(结构化 GRS-1 记录)的列表。每个组件是表单 (type, value 的标记类型、标记值对

字符串标记通常具有相应的标记类型 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

以下 PHP 代码段将 MARC21/USMARC 记录作为 MARCXML 返回。原始记录以 marc-8(大多数 XML 解析器未知)返回,因此我们将其转换为 UTF-8(所有 XML 解析器都必须支持)。

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

?>

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top