Convert ISBN10 to ISBN13 with PHP
Since at the start of 2007 all books will no longer be using the ISBN10, we needed a way to convert all those ISBN10 numbers to the new ISBN13 (or EAN).
function genchksum13($isbn) { $isbn = trim($isbn); $tb = 0; for ($i = 0; $i <= 12; $i++) { $tc = substr($isbn, -1, 1); $isbn = substr($isbn, 0, -1); $ta = ($tc*3); $tci = substr($isbn, -1, 1); $isbn = substr($isbn, 0, -1); $tb = $tb + $ta + $tci; } $tg = ($tb / 10); $tint = intval($tg); if ($tint == $tg) { return 0; } $ts = substr($tg, -1, 1); $tsum = (10 - $ts); return $tsum; } function isbn10_to_13($isbn) { $isbn = trim($isbn); if(strlen($isbn) == 12){ // if number is UPC just add zero $isbn13 = '0'.$isbn;} else { $isbn2 = substr("978" . trim($isbn), 0, -1); $sum13 = genchksum13($isbn2); $isbn13 = "$isbn2$sum13"; } return ($isbn13); } // usage echo isbn10_to_13('1234567890'); // returns ISBN13
There are no checks in the code to see if the number is numeric for example, but this should give you a good place to start.
comments powered by Disqus