関数・クラス解説

yaz_record

version:PHP 4 >= 4.0.1, PECL yaz >= 0.9. (公式)

レコードを返す

公式リファレンス

書式

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
レコードの構文が文字列で返されます。たとえば USmarc、GRS-1、 XML などです。
database
レコードの該当位置に関連するデータベースの名前を文字列で返します。
array
レコードは、GRS-1 の構造を反映した配列で返されます。 この型は MARC および GRS-1 で使用可能です。XML、SUTRS はサポートされておらず、実際のレコードが XML あるいは SUTRS であった場合は空文字列が返されます。 返される配列には、GRS-1 の各リーフ/内部ノードに対応するリストが 含まれます。個々のリスト内にもリストがあり、 最初の要素が path でその次が data です(もし data が存在する場合)。 path は、ルートから各リーフまでの(構造化された GRS-1 レコードの) ツリーコンポーネントの一覧を保持します。各コンポーネントはタグ型で、 タグの値は (type, value のような形式のペアとなります。 tags 文字列は、一般に type 3 の tag に対応します。 MARC は配列で返すことも可能です(内部で GRS-1 に変換されます)。

返値

位置 pos のレコードを返します。もし指定した位置に レコードが存在しない場合は空文字列を返します。 もし指定した位置にデータベースのレコードが存在しない場合、 空文字列が返されます。

サンプル

例1 GRS-1 レコードの配列

このような GRS-1 レコードを想定します。

(4,52)Robert M. Pirsig(4,70) (4,90) (2,7)Transworld Publishers, ltd. このレコードは、ルートに 2 つのノードを持っています。ルートレベルの 最初の要素は (4,52) [tag type 4, tag value 52] で、そのデータは Robert M. Pirsig です。ルートレベルの 2 番目の 要素 (4,70) はサブツリーを持っており、そこにはひとつの要素 (4,90) があります。(4,90) はまた別のサブツリー (2,7) を持っており、 そのデータは Transworld Publishers, ltd. です。

このレコードが $p の位置にあるとすると、

$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 パーサはこれを理解できなければなりません) に変換します。

$rec = yaz_record($id, $p, "xml; charset=marc-8,utf-8");

レコード $rec は Sablotron XSLT を使用して 以下のように処理可能です。

$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("']*>'", '', $res); echo $res;

PHP 5 では、Sablotron XSLT ではなく XSL 拡張モジュールが使用される必要があります。

ワード検索


※入力キーワードが、関数名・説明文・タグに含まれるものを検索

関数名アルファベット別

A B C D E F G H I J
K L M N O P Q R S T
U V W X Y Z _

最終更新一覧

stristr
 大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

stripslashes
 バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

stripos
 大文字小文字を区別せずに文字列が最初に現れる位置を取得する

stripcslashes
 addcslashes() でクォートされた文字列をアンクォートする

strip_tags
 文字列から HTML と PHP のタグを除去して返却

strcspn
 指定した文字が最初に現れる位置を調べる

strcoll
 ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

strcmp
 2つの文字列を比較し同じか(あるいは大小)を判定する

strchr
 strstr() のエイリアス

strcasecmp
 2つの文字列を比較(大文字小文字を区別せず同じとみなす)

カテゴリー一覧

PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール