Signatur
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
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;
}
?>
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.