function handle_marc($f) { $p = new MarcParser(); while ($buf = fread($f, 8192)) { $err = $p->parse($buf); if (is_a($err, 'MarcParseError')) { die("Bad MARC record, giving up: " . $err->toStr()); } print_recs($p->records); $p->records = array(); } $p->eof(); print_recs($p->records); }
*/ // !!!!!!!!!!!!!!!!!!!!!!! // => NOM DU FICHIER UNIMARC // si il est dans un dossier il faut mettre le nom du dossier avec un slash // (toujours par rapport à la position du fichier de script) // ainsi pour les notices dans le dossier « fichiers » : // $notice_unimarc = "fichiers/nom_de_la_notice.mrc"; $notice_unimarc = "HEADBAROQUE.mrc"; // on inclue la librairie MARC.php require_once "MARC.php"; // on inclue les fonctions de décodages du format iso-2709 require_once "iso2709_decode.php"; // on ouvre le fichier de notice dont on précisé le chemin $f = @fopen($notice_unimarc, 'rb'); // on crée l'analyseur de fichier unimarc (basé sur la librairie MARC.php) $p = new MarcParser(); // on crée la variable $xml $xml = ""; $xml .= "<livre>\n"; $notices = array(); // on parcours le fichier de notices while ($buf = fread($f, 8192)) { $err = $p->parse($buf); // on vérifie qu'il n'y a pas d'erreur dans le fichier unimarc if (is_a($err, 'MarcParseError')) { die("Bad MARC record, giving up: " . $err->toStr()); } // on stocke dans le xml le résultat de la fonction print_recs() // elle est appelée pour chaque notice trouvée //$xml .= print_recs( $p->records ); $notices = array_merge($notices, print_recs($p->records));