J’ai déjà proposé ici plusieurs fonctions PHP pour convertir convertir un ISBN-10 en EAN-13 ou l’inverse, mais ce n’est pas toujours pratique d’avoir 36 fonctions différentes. Voici donc la fonction unique pour les rassembler toutes et dans les ténèbres les lier.
MAJ du 20/04/2014 : Une version plus récente et orientée-objet.
Quand on bosse sur le web et dans le secteur du livre, on a souvent l’occasion d’utiliser les ISBN-13 (ces identifiants unique dont tous les livres publiés depuis les années 70 sont dotés) et on a parfois besoin de les convertir en EAN-13 (les codes barres qui se trouvent au dos des livres) pour toutes sortes de raisons, voire en ISBN-10 (ISBN à 10 chiffres en usage avant janvier 2007). Pour cette raison, j’ai développé plusieurs fonctions permettant de faire des conversions, mais je pensais depuis un moment à les regrouper en une seule qui soit multitâche. C’est donc chose faite.
La fonction isbn() accepte en entrée n’importe quelle forme de code : ISBN-10, ISBN-13, EAN, avec ou sans tiret, avec ou sans clé de contrôle, et peut le restituer à la sortie sous forme d’ISBN-10, d’ISBN-13 ou d’EAN. Il peut donc également servir à calculer la clé de contrôle d’un ISBN (en l’entrant sans le dernier caractère) ou à calculer la validité d’un ISBN. Quelques exemples :
Convertir un EAN en ISBN-13
isbn("9782953595109","ISBN13") // retourne 978-2-9535951-0-9
Convertir un ISBN-10 en EAN-13
isbn("2-9535951-0-4","EAN") // retourne 9782953595109
Calculer la clé de contrôle d’un ISBN-13
isbn("978-2-9535951-0","ISBN13") // retourne 978-2-9535951-0-9
Vérifier la validité d’un EAN
if(isbn("978-2-9535951-0","ISBN13") == "978-2-9535951-0") echo "ok" // affiche ok
function.isbn.php 1.2 : Demo / Télécharger
MAJ du 23/12/2010 (1.1) : OK, donc la première version était complètement bugguée, en voici une qui fonctionne vraiment.