Samstag, 25. Februar 2006

Amazon: Bücher mit ean2isbn

Da Amazon Web Services partout keine EANs fressen will, die ich von Büchern abgeschrieben habe (bei DVDs und CDs gibt es keine Probleme), musste ich einen Weg finden, aus den EAN-Codes den korrespondierenden ISBN-Wert zu ermitteln. Denn ISBN/ASIN-Nummern werden ohne Probleme akzeptiert.

Im Grund ist es keine grosse Hexerei: Im 13-stelligen EAN ist die ISBN-Nummer enthalten – ihr werden nur die Ziffern 978 vorangestellt und die Prüfsumme abgezwackt.

Der Umkehrschluss: 978 entfernen und die Checksum berechnen – fertig ist die ISBN. Doch diese Checksumme hat’s in sich. Es handelt sich hierbei um eine „gewichtete Quersumme modulo 11“. Modulo – als Realgymnasiast ist dies nichts unbekanntes. Aber was zum Teufel bedeutet „gewichtet“?

Das Studieren im Netz verfügbarer Sourcen hat dann ergeben, dass damit die Multiplikation eines Wertes mit seiner Stelle im 10-stelligen Code bedeutet. Wieder etwas gelernt!

Meine Funktion folgt der oben gefundenen Perl-Funktion auf Schritt und tritt – ich habe diese nach PHP „übersetzt“:

<?
function amazon__ean2isbn($str_raw) {
 $str_output = NULL;
 
 if(!ereg("^978[0-9]{10}$",$str_raw))
  return $str_output;
 
 $str_output = substr($str_raw,3,9);
 
 $int_sum = 0;
 
 for($i = 0; $i < 9; $i++) {
  $int_sum += $str_output[$i] * ($i+1);
 }
 
 if($int_sum % 11 == 10)
  $str_output .= 'X';
 else
  $str_output .= $int_sum % 11;
 
 return $str_output;
}
?>

Quelle: ean2isbn.php

Liked this post? Follow this blog to get more. 

Tags:
Labels: Uncategorized

Kommentar erfassen