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 *