ISBN10 zu ISBN13 Umrechnung mit PHP

2006-11-29

Ein kleines Problem stellte sich mir gerade… wie rechne ich eine alte ISBN-10-Nummer mit 10 Stellen (bzw. 13 mit Bindestrichen) in eine neue, ab 1.1.2007 vorgeschriebene ISBN-13 mit 13 Stellen umzuwandeln.

function isbn10to13($isbn10){
$isbnclean = preg_replace("/([^d])/",
"",substr($isbn10,0,-1));
if (strlen($isbnclean) != 9) {
return $isbn10;
}
$isbn="978".$isbnclean;

$check=0;
for ($i=0;$i<12;$i++) {
$check+=(($i%2)*2+1)*$isbn{$i};
}
$check=(10-($check%10))%10;
return "978-".substr($isbn10,0,12).$check;
}

Dieses Skript tut eben genau das!

  1. Andre - Dezember 10th, 2006 at 16:25

    Hallo,
    in der vorletzten Zeile muss es
    return “978-“.substr($isbn10,0,-1).$check;
    heissen, also “-1″ statt “12”.
    Ansonsten ein schönes Script, danke!

  2. justBe - Dezember 10th, 2006 at 17:23

    @andre: es funktionieren beide Varianten. -1 bedeutet bis zum vorletzten Zeichen und meine Variante geht bis zum 12. Zeichen.

  3. Jens - Januar 25th, 2007 at 12:33

    Hallo

    vielen Dank für dieses Skript! Andre scheint aber recht zu haben. Mit deinem Code kommt eine 14 Stellige raus… die nicht mit bekannten ISBN-13 über einstimmt (Vorletze Zahl ist zu viel). Mit Andres Code kommt ne 13ner raus die stimmt..

    Gruß Jens

  4. Anolphie - Mai 21st, 2007 at 16:24

    Wo wir schon bei dem Thema Umrechnungen sind :-) Bei http://www.umrechnungen.de kann man Maßeinheiten mittels Ajax-Anwendung online umrechnen.