好了,背景知識介紹到這,下面我寫的ISBN碼校驗函數(shù)(php版),需要的話可以直接使用:
function isbn_sum($isbn, $len) { /* * 該函數(shù)用于計算ISBN加權和 * 參數(shù)說明: * $isbn : isbn碼 * $len : isbn碼長度 */ $sum = 0; if ($len == 10) { for ($i = 0; $i < $len-1; $i++) { $sum = $sum + (int)$isbn[$i] * ($len - $i); } } elseif ($len == 13) { for ($i = 0; $i < $len-1; $i++) { if ($i % 2 == 0) $sum = $sum + (int)$isbn[$i]; else $sum = $sum + (int)$isbn[$i] * 3; } } return $sum; } function isbn_compute($isbn, $len) { /* * 該函數(shù)用于計算ISBN末位校驗碼 * 參數(shù)說明: * $isbn : isbn碼 * $len : isbn碼長度 */ if ($len == 10) { $digit = 11 - isbn_sum($isbn, $len) % 11;
if ($digit == 10) $rc = 'X'; else if ($digit == 11) $rc = '0'; else $rc = (string)$digit; } else if($len == 13) { $digit = 10 - isbn_sum($isbn, $len) % 10;
if ($digit == 10) $rc = '0'; else $rc = (string)$digit; } return $rc; } function is_isbn($isbn) { /* * 該函數(shù)用于判斷是否為ISBN號 * 參數(shù)說明: * $isbn : isbn碼 */ $len = strlen($isbn); if ($len!=10 && $len!=13) return 0; $rc = isbn_compute($isbn, $len); if ($isbn[$len-1] != $rc) /* ISBN尾數(shù)與計算出來的校驗碼不符 */ return 0; else return 1; }
函數(shù)寫好后,就可以直接調(diào)用了,下面是調(diào)用示例:
<?php echo is_isbn('9787507421781') ? '校驗通過' : '校驗失敗'; ?>
原文:http://www.ludou.org/php-check-isbn.html
本文鏈接:http://m.95time.cn/tech/program/2010/8005.asp
出處:露兜博客
責任編輯:bluehearts
上一頁 PHP校驗ISBN碼的函數(shù) [1] 下一頁
◎進入論壇網(wǎng)絡編程版塊參加討論
|