PHP Conference Japan 2024

yaz_record

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

yaz_record傳回一個記錄

描述

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

記錄的語法會以字串形式傳回,例如 USmarcGRS-1XML 等。

database

與此位置的記錄相關聯的資料庫名稱會以字串形式傳回。

array

記錄會以反映 GRS-1 結構的陣列形式傳回。此類型適用於 MARC 和 GRS-1。不支援 XML 和 SUTRS,如果實際記錄是 XML 或 SUTRS,則會傳回空字串。

傳回的陣列包含與 GRS-1 的每個葉節點/內部節點對應的清單。每個清單項目都包含一個子清單,其中第一個元素是 *path*,第二個是 *data*(如果資料可用)。

路徑(字串)會保存從根到葉的每個樹狀元件 (結構化 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");
?>

可以使用 Sablotron XSLT 處理器處理記錄 $rec,如下所示

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