app教程网 综合百科 isbn校验规则(isbn码在线查询)

isbn校验规则(isbn码在线查询)

首先,我们来介绍一下ISBN代码的背景知识。不想看的朋友可以直接看第二页。第二页解释了ISBN代码检查功能(php版本)

最近在编写图书管理程序时,需要检查图书ISBN代码的正确性。查了一些资料,了解了图书ISBN编码的构成。详情可参考:国际标准书号-维基百科。让我们简单描述一下什么是ISBN码:

国际标准书号(ISBN;Is-ben)是国际通用的图书或独立出版物(定期出版的期刊除外)的代码。

出版商可以通过国际标准书号清楚地识别所有非期刊图书。一个ISBN只有一个或一个相应的出版物。如果新版在原版的基础上内容变化不大,出版时就不会得到新的国际标准书号。

平装版改为精装版时,原对应的ISBN号也要收回。

我们平时能看到的书号有10位书号和13位书号,其中10位书号从2007年1月就已经停用了,新出版的书号都是13位。考虑到严格的图书馆管理程序应该考虑许多问题,

因为具有10位ISBN码的图书仍然有巨大的存在量,所以为了检查图书ISBN码的正确性,需要同时考虑10位和13位的情况。从维基百科我们可以知道ISBN码的最后一位是校验码。事实上,为了检查ISBN代码的正确性,

就是计算ISBN校验码,看是否匹配最后一位。这里所说的验证,只是验证ISBN在构成上是否合法,而不是是否是出版图书的ISBN。以下是维基百科提供的ISBN码验证算法:

校验码的计算方法(10码)

假设一个国际标准书号的前九位是:7-309-04547。

计算加权和s:s=710+39+08+97+06+45+54+43+72=226。

计算S11 m的余数:m=226mod11=6。

计算11m n的差:n=11 6=5。

如果N=10,校验码是字母“x”

如果N=11,则校验码是数字“0”

如果n是另一个数,校验码就是数n。

所以这本书的校验码是5;如果用户提供的ISBN码是7-309-04547-6,则验证失败。

校验码的计算方法(13码)

假设一个国际标准书号的前12位是:978-986-181-728。

计算加权和s:s=(91)(73)(81)(93)(81)(63)(11)(83)(73)(21)(81)。

计算S10 m的余数:m=164mod10=4。

计算10m n的差值:n=10 4=6。

如果N=10,则校验码是数字“0”

如果n是另一个数,校验码就是数n。

所以这本书的校验码是6。完整的ISBN号是ISBN 978-986-181-728-6。

好了,背景知识介绍到这里。下面这个我写的ISBN码验证函数(php版)如果有需要可以直接用:

函数isbn_sum($isbn,$ len){/* *此函数将zur BerechnungISBNGewichtung und * Parameter Beschreibung:* $ ISBN:ISBN代码* $len:isbnCode长度*/$ sum=0;if($ len==10){ for($ I=0);$ I $ len-1;$ I){ $ sum=$ sum(int)$ ISBN[$ I]*($ len-$ I);} else if($ 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;返回$ sumisbn_compute($isbn,$ len){/* *此函数wird zur BerechnungISBNLetzte prfsumme *参数Beschreibung:* $isbn:isbn代码* $len:isbnCode长度*/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) {/* This function is used to judge whether it is an international standard book number * Parameter Description: * $isbn: isbn code */$ len=strlen ($ ISBN); if ($len!=10 $len!=13) returns 0; $rc=isbn_compute($isbn,$ len); if ($isbn[$len-1]!=$rc) /* ISBN mantissa does not match the calculated check code */returns 0; Otherwise, return 1; }

函数写好之后,就可以直接调用了。以下是调用的示例:

?php echo是_isbn('9787507421781 ')?验证通过“:”验证失败;

本文来自网络,不代表本站立场,转载请注明出处:https: