在 PHP 中实现 Z39.50 协议时,可以使用 PHP 的 ZOOM 扩展库来进行开发。在进行搜索时,需要设置 RPN(Reverse Polish Notation)参数,RPN 参数是一个逆波兰表达式,用于指定搜索条件。例如,以下是一个简单的 RPN 参数:

@attr 1=4 "PHP"

这个 RPN 参数表示搜索所有字段中包含字符串 "PHP" 的记录。其中,@attr 表示搜索的属性,1 表示属性类型为字符串,4 表示属性为任意字段,"PHP" 表示搜索的字符串。

当搜索完成后,会返回一个或多个记录,每个记录都是一个 MARC21 记录,需要使用相应的代码库进行解析。例如,可以使用 PHP 的 File_MARC 库来解析记录。以下是一个简单的示例代码:

// 连接到 Z39.50 服务器
$zoom = zoom_open("myserver:210/DB");

// 设置搜索条件
$query = "@attr 1=4 \"PHP\"";
$option = array(
    "start" => 1,
    "count" => 10,
    "syntax" => "usmarc"
);
$records = zoom_search($zoom, $query, $option);

// 解析记录
foreach ($records as $record) {
    $marc = new File_MARC($record);
    echo $marc->getField("245")->getSubfield("a")->getData();
}

// 关闭连接
zoom_close($zoom);

在这个示例代码中,首先使用 zoom_open 函数连接到 Z39.50 服务器。然后,使用 zoom_search 函数进行搜索,其中的 RPN 参数为 $query,搜索结果存储在 $records 变量中。最后,使用 File_MARC 类解析每个记录,并输出标题信息。最后,使用 zoom_close 函数关闭连接

php实现z3950协议时rpn参数如何设置?返回结果record怎样解析?

原文地址: https://www.cveoy.top/t/topic/fJX2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录