知识大全 PHP校验ISBN码的函数
Posted 函数
篇首语:愿你成为自己喜欢的模样,不抱怨,不将就,有自由,有光芒。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PHP校验ISBN码的函数相关的知识,希望对你有一定的参考价值。
PHP校验ISBN码的函数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
最近在编写一个图书管理程序的时候 需要校验图书ISBN码正确性 查了一些资料 了解了图书ISBN码的构成 详细资料可以参考 国际标准书号 – 维基百科 下面还是简述一下什么是ISBN码
国际标准书号(International Standard Book Number ISBN 拟发音is ben) 是国际通用的图书或独立的出版物(除定期出版的期刊)代码 出版社可以通过国际标准书号清晰的辨认所有非期刊书籍 一个国际标准书号只有一个或一份相应的出版物与之对应 新版本如果在原来旧版的基础上没有内容上太大的变动 在出版时也不会得到新的国际标准书号码 当平装本改为精装本出版时 原来相应的国际标准书号号码也应当收回
平常我们能够见到的ISBN码有 位和 位两种 其中 位的ISBN自 年 月起已经停止使用 目前新出版的图书ISBN码都是 位 考虑到一个严谨的图书管理程序要考虑到多方面的问题 因为 位ISBN码的图书还是有巨大的存世量的 所以要校验图书ISBN码的正确性 就必须同时考虑 位和 位的情况 从维基百科可以了解到ISBN码最后一位是校验码 其实要想校验ISBN码的正确 就是通过计算ISBN的校验码 看是否与最后一位吻合 这里所说的校验也只是校验ISBN在构成上是否合法 而不会校验是否为已发行图书的ISBN 下面是维基百科提供的ISBN码校验算法
校验码的计算方法( 码)
假设某国际标准书号号码前 位是
计算加权和S S = × + × + × + × + × + × + × + × + × =
计算S÷ 的余数M M = mod =
计算 – M 的差N N = ? =
如果N = 校验码是字母"X"
如果N = 校验码是数字" "
如果N为其他数字 校验码是数字N
所以 本书的校验码是 如果用户提供的ISBN码是 那么校验失败
校验码的计算方法( 码)
假设某国际标准书号号码前 位是
计算加权和S S = ( × )+( × )+( × )+( × )+( × )+( × )+( × )+( × )+( × )+( × )+( × )+( × ) =
计算S÷ 的余数M M = mod =
计算 – M 的差N N = ? =
如果N = 校验码是数字" "
如果N为其他数字 校验码是数字N
所以 本书的校验码是 完整的国际标准书号号码为 ISBN
好了 背景知识介绍到这 下面我写的ISBN码校验函数(php版) 需要的话可以直接使用
function isbn_sum($isbn $len) /* * 该函数用于计算ISBN加权和 * 参数说明 * $isbn : isbn码 * $len : isbn码长度 */ $sum = ; if ($len == ) for ($i = ; $i < $len ; $i++) $sum = $sum + (int)$isbn[$i] * ($len $i); elseif ($len == ) for ($i = ; $i < $len ; $i++) if ($i % == ) $sum = $sum + (int)$isbn[$i]; else $sum = $sum + (int)$isbn[$i] * ; return $sum; function isbn_pute($isbn $len) /* * 该函数用于计算ISBN末位校验码 * 参数说明 * $isbn : isbn码 * $len : isbn码长度 */ if ($len == ) $digit = isbn_sum($isbn $len) % ;
if ($digit == ) $rc = X ; else if ($digit == ) $rc = ; else $rc = (string)$digit; else if($len == ) $digit = isbn_sum($isbn $len) % ;
if ($digit == ) $rc = ; else $rc = (string)$digit; return $rc; function is_isbn($isbn) /* * 该函数用于判断是否为ISBN号 * 参数说明 * $isbn : isbn码 */ $len = strlen($isbn); if ($len!= && $len!= ) return ; $rc = isbn_pute($isbn $len); if ($isbn[$len ] != $rc) /* ISBN尾数与计算出来的校验码不符 */ return ; else return ;
函数写好后 就可以直接调用了 下面是调用示例
<?php echo is_isbn( ) ? 校验通过 : 校验失败 ; ?>
cha138/Article/program/PHP/201311/21167相关参考
关于PHP自动判断字符集并转码的详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 原理很简单因
php技巧:几个比较实用的PHP函数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! sys_ge
PHP常用函数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! <?phpfunctio
PHP5函数小全 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 很多PHP前辈都写了PHP大全但
基于PHP中的常用函数回顾 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!以下是对PHP中的常用函数
解析PHP函数array 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我们都知道PHP中的数组
本篇文章是对计算php页面运行时间的函数进行了详细的分析介绍需要的朋友参考下 一个计算php页面运行时间的函数复制代码代码如下:cha138/Article/program/P
PHP最常用的ini函数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 针对PHP配置文件PHP
php函数method_exists()与is_callable()的区别在哪?在php面相对象设计过程中往往我们需要在调用某一个方法是否属于某一个类的时候做出判断常用的方法有method_exist
•strtotime函数的一些用法•strtotime函数的实现基本原理•strtotime(”month”)求值失败的原因strtotime函数的一些用法strtotime(”JAN”)和str