Start · Sprachen · PHP · Referenz · yaz_ccl_conf

yaz_ccl_conf

Funktion

Konfiguriert den CCL-Parser (Common Command Language) für eine YAZ-Verbindung anhand eines Konfigurations-Arrays.

seit PHP 4.0.5 Kategorie: misc

Signatur

yaz_ccl_conf(resource $id, array $config): void

Beschreibung

yaz_ccl_conf() richtet den CCL-Parser für eine bestehende YAZ-Verbindung ein. CCL (Common Command Language) ist eine benutzerfreundliche Abfragesprache, die intern in das Z39.50-Protokoll übersetzt wird. Diese Funktion legt fest, welche CCL-Felder welchen BIB-1-Attributen entsprechen.

Das Konfigurations-Array bildet logische Feldnamen auf Attribut-Kombinationen ab. Die Schlüssel sind die Namen der CCL-Felder (z. B. 'title', 'author'), die Werte enthalten die zugehörigen BIB-1-Attribute im Format 'u=1 s=al' (Use-Attribut, Structure-Attribut etc.).

Diese Funktion muss vor dem Aufruf von yaz_ccl_parse() aufgerufen werden, damit Abfragen korrekt in RPN (Reverse Polish Notation) für Z39.50-Server übersetzt werden können. Sie ist besonders nützlich, wenn Endnutzer einfache, lesbare Suchbefehle eingeben sollen, die dann transparent in komplexe Z39.50-Anfragen umgewandelt werden.

Hinweis: Die YAZ-Erweiterung ist veraltet und wird in modernen PHP-Versionen nicht mehr standardmäßig unterstützt. Sie steht nur zur Verfügung, wenn PHP mit YAZ-Bibliotheksunterstützung kompiliert wurde.

Parameter

Name Typ Default Beschreibung
$id Pflicht resource Eine YAZ-Verbindungsressource, die zuvor mit yaz_connect() erzeugt wurde.
$config Pflicht array Assoziatives Array, das CCL-Feldnamen auf BIB-1-Attribut-Strings abbildet. Jeder Wert enthält Attribut-Paare im Format 'u=<Use> s=<Structure>'. Beispiel: ['title' => 'u=4 s=al', 'author' => 'u=1 s=al'].

Rückgabewert

Typ
void
Beschreibung
Diese Funktion gibt keinen Wert zurück.

Beispiele

Grundlegende CCL-Konfiguration für Titel- und Autorensuche

<?php
// Verbindung zu einem Z39.50-Server aufbauen
$id = yaz_connect('z3950.loc.gov:7090/Voyager');

// CCL-Felder auf BIB-1-Attribute abbilden
$config = [
    'title'  => 'u=4 s=al',   // Use=4 (Titel), Structure=Phrase
    'author' => 'u=1 s=al',   // Use=1 (Personenname), Structure=Phrase
    'isbn'   => 'u=7',        // Use=7 (ISBN)
    'any'    => 'u=1016',     // Use=1016 (Beliebiges Feld)
];

yaz_ccl_conf($id, $config);

// Nun kann ein CCL-Ausdruck geparst werden
$result = [];
if (yaz_ccl_parse($id, 'title="PHP"', $result)) {
    echo 'RPN-Abfrage: ' . $result['rpn'] . PHP_EOL;
} else {
    echo 'Fehler: ' . $result['errorstring'] . PHP_EOL;
}
?>
RPN-Abfrage: @attr 1=4 @attr 4=1 "PHP"

Mehrere Felder konfigurieren und kombinierte Suche ausführen

<?php
$id = yaz_connect('my.library.example:210/db');

// Umfangreichere Feldkonfiguration
yaz_ccl_conf($id, [
    'ti'      => 'u=4 s=al t=l r=r',
    'au'      => 'u=1 s=al t=l r=r',
    'su'      => 'u=21 s=al',
    'yr'      => 'u=31 t=l r=o',
    'default' => 'u=1016',
]);

$rpn = [];
// Kombinierte CCL-Abfrage: Titel UND Autor
if (yaz_ccl_parse($id, 'ti="Programmierung" and au="Müller"', $rpn)) {
    yaz_search($id, 'rpn', $rpn['rpn']);
    yaz_wait();
    echo 'Treffer: ' . yaz_hits($id) . PHP_EOL;
} else {
    echo 'Parse-Fehler bei Position ' . $rpn['errorpos'] . ': ' . $rpn['errorstring'] . PHP_EOL;
}
?>

// Wichtig · Fallstricke

Veraltet: Die YAZ-PHP-Erweiterung wird seit PHP 5 nicht mehr aktiv weiterentwickelt und ist in vielen Standardinstallationen nicht verfügbar. Für neue Projekte sollte eine alternative Z39.50-Bibliothek oder ein anderes Protokoll (z. B. SRU/SRW) in Betracht gezogen werden.

Die Attribut-Syntax in den Konfigurationswerten folgt dem BIB-1-Standard: u = Use, s = Structure, t = Truncation, r = Relation, p = Position, c = Completeness. Falsche Attribut-Kombinationen können zu Suchfehlern oder unerwarteten Ergebnissen auf dem Z39.50-Server führen.

Die Konfiguration gilt nur für die jeweilige Verbindungsressource $id und muss für jede Verbindung separat gesetzt werden.