PHP : Conversion ISBN/EAN, la classe !

J’ai proposĂ© ici-mĂȘme, ces derniĂšres annĂ©es, plusieurs fonctions PHP permettant la manipulation, la conversion et la validation de codes ISBN, que j’utilise notamment dans le cadre de Biblys ou Citriq.  Entre temps, j’ai dĂ©couvert la programmation orientĂ© objet : voici donc une classe pour rĂ©unir toutes ses fonctions.

Télécharger php-isbn-class sur Github

Un autre intĂ©rĂȘt de cette classe par rapport Ă  mes prĂ©cĂ©dentes fonctions est qu’elle ne se limite pas aux ISBN francophones (978-2 et 979-10) mais qu’elle fonctionne avec n’importe quel code, grĂące au fichier range.xml qui l’accompagne.

Cette classe peut ĂȘtre utilisĂ©e pour :

  • Valider un code ISBN
  • Convertir des codes entre les formats ISBN-10, ISBN-13 et EAN (sans tirets)
  • Calculer le caractĂšre de contrĂŽle
  • Afficher l’agence d’enregistrement du code (pays ou langage)

DĂ©mo

Une dĂ©mo est disponible Ă  l’adresse : http://labs.nokto.net/php-isbn-class/

Installation

  • Incluez ISBN.class.php dans votre script PHP
  • Procurez-vous une version rĂ©cente du fichier range.xml auprĂšs de l’ISBN International Agency (ou utilisez celle fournie)
  • DĂ©finissez la constante ISBN_RANGES_FILE avec le chemin du fichier range.xml
  • Utilisez les autres constantes pour dĂ©finir vos messages d’erreurs (en anglais par dĂ©faut).

Utilisation

 <?php
     require_once('ISBN.class.php');
     $isbn = new ISBN('9791091146098'); // créer un objet ISBN
     if ($isbn->isValid()) // vérifie si le code est un ISBN valide
     {
         echo $isbn->format('ISBN-13'); // affiche le code au format ISBN-13
         echo $isbn->format('ISBN-10'); // affiche le code au format ISBN-10
         echo $isbn->getChecksum(); // calcule et affiche le caractĂšre de contrĂŽle
         echo $isbn->getAgency(); // affiche l'agence d'enregistrement
     }
     else
     {
         echo $isbn->getErrors(); // show validation errors
     }
 ?>

Image de une : Barcode CC BY-SA  Martin Fisch

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *