教文館の社内ナレッジベースです。

PHP関数。13桁入力を10桁入力に変更する。

//+++++++++++++++++++++++++++++++++++++++++
/**
* 13桁ISBNを10桁ISBNに変換する
* @param type $value 13桁ISBN
* @return 10桁ISBNもしくはnull
*/
function isbn13to10($value)
{
$calc = 0;

//ハイフンを置換

$value = post_custom(‘ISBN’);
$value = str_replace(“-“, “”, $value);

if(ctype_digit($value) && strlen($value) == 13)
{
//最初の3桁と最後の数値(チェックディジット)を削除
$value = substr($value, 3, -1);

for($i = 0, $j = 10; $i < 9; $i++, $j–)
{
$calc += $value[$i] * $j;
}

//余りの算出
$remainder = $calc % 11;

//チェックディジットの算出
$checkDigit = 11 – $remainder;
if($checkDigit == 10)
{
$checkDigit = “X”;
}
else if($checkDigit == 11)
{
$checkDigit = 0;
}

//チェックディジットを最後に付加する
$isbn = $value.$checkDigit;
}
else
{
//$valueが数値以外、13桁以外です
$isbn = null;
}

return $isbn;
}