国语自产精品视频在线看:您身边最放心的安全下载站! 最新软件|热门排行|软件分类|软件专题|厂商大全

国语自产精品视频在线看

技术教程
您的位置:首页网络编程PHP编程 → 什么是ISBN码?php版ISBN码校验函数实例

什么是ISBN码?php版ISBN码校验函数实例

我要评论 2012/05/30 10:04:44 来源:国语自产精品视频在线看 编辑:downcc.com [ ] 评论:0 点击:291次

首先 我们介【wǒ men jiè】绍一下⏱ISBN码的背景知识🎡,不想看【bú xiǎng kàn】的朋友【de péng yǒu】🌝可以直【kě yǐ zhí】接看第📦二页🚮,第二页🚮讲解的是ISBN码校验【mǎ xiào yàn】函数(php版)

最近在编写一个图书🍸管理程🎛序的时候,需要校验图书【yàn tú shū】🍃ISBN码【mǎ】正确性💍,查了一些资料,了解了图书🍸ISBN码的构【mǎ de gòu】成【chéng】,详细资🔪料可以【liào kě yǐ】⭐参考🌛:国际标【guó jì biāo】准书号【zhǔn shū hào】 – 维基百⏪科【kē】,下面还是简述一下什🚛么是【me shì】ISBN码【mǎ】:

国际标【guó jì biāo】准🚖书号【shū hào】(International Standard Book Number,ISBN;拟发音is-ben),是国际【shì guó jì】通用的图书或独立的【dú lì de】🚦出版物(除定期出版的🔎期刊)代码【dài mǎ】。出版社【chū bǎn shè】🈲可以通🍻过国际🔱标准书号【shū hào】清晰👽的辨认【de biàn rèn】所有非期刊书👊籍。一个国际标【guó jì biāo】准🚖书号【shū hào】只有一个🕠或一份🏚相应【yīng】的出版物与之对【yǔ zhī duì】应【yīng】。新版本如果在【rú guǒ zài】原来旧👞版的基🏹础上没有内容上太大的变动,在出版时【chū bǎn shí】也不会得到新的国际标【guó jì biāo】准🚖书号【shū hào】码🍞。当平装【dāng píng zhuāng】♏本改为【běn gǎi wéi】🧒精装本🦊出版时【chū bǎn shí】,原来相应【yīng】的国际标【guó jì biāo】准🚖书号号【shū hào hào】码也应【mǎ yě yīng】🧥当收回。

平常我【píng cháng wǒ】🚭们能够【men néng gòu】见到的【jiàn dào de】ISBN码【mǎ】有10位😀和13位两种【wèi liǎng zhǒng】🖨,其中10位的【wèi de】🔢ISBN自🙏2007年【nián】1月起已【yuè qǐ yǐ】⛸经停止使用🎉,目前新出版的图书【shū】ISBN码【mǎ】都是☔13位😀。考虑到【kǎo lǜ dào】🎤一个严谨的图🔪书【shū】管理程序要【chéng xù yào】🦗考虑到【kǎo lǜ dào】🎤多方面【duō fāng miàn】的问题🍷,因为10位😀ISBN码【mǎ】的图书【shū】还是✍有巨大的存世【de cún shì】量的,所以要🤪校验【xiào yàn】图书【shū】ISBN码的正【mǎ de zhèng】⏯确性,就必须同时考虑10位😀和13位的【wèi de】🔢情况。从维基百【wéi jī bǎi】科可以了解【yǐ le jiě】到ISBN码最后【mǎ zuì hòu】🕚一位是🖨校验码【xiào yàn mǎ】,其实要想校验【xiào yàn】ISBN码的正【mǎ de zhèng】⏯确,就是通过计算🙌ISBN的校验【xiào yàn】🌴码【mǎ】,看是否🚿与最后一位😀吻合【wěn hé】。这里所【zhè lǐ suǒ】说的校【shuō de xiào】验【yàn】🌴也只是【yě zhī shì】校验【xiào yàn】👹ISBN在构成❤上是否合法,而不会校验【xiào yàn】是🥥否为已发行图书【shū】的ISBN。下面是维基百【wéi jī bǎi】科提供的ISBN码【mǎ】校验【xiào yàn】🙁算法:

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

假设某🚁国际标🏉准书号【zhǔn shū hào】号码前9位是【wèi shì】:7-309-04547

计算加【jì suàn jiā】📳权和S:S = 7×10+3×9+0×8+9×7+0×6+4×5+5×4+4×3+7×2 = 226

计算S÷11的余数【de yú shù】🛏M:M = 226 mod 11 = 6

计算⏩11 – M 的差【de chà】N:N = 11 − 6 = 5

如果【rú guǒ】N = 10,校验码❓是字母"X"

如果N = 11,校验码是数字【shì shù zì】🏒"0"

如果【rú guǒ】⛸N为其他数字【shù zì】,校验码💝是数字【shù zì】N 

所以【suǒ yǐ】,本书的【de】校验码是【mǎ shì】💬5;如果用🚶户提供的【de】ISBN码是【mǎ shì】💬7-309-04547-6,那么校验失败🚖

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

假设某国际标【guó jì biāo】⚽准书号⚓号码前12位是【wèi shì】:978-986-181-728

计算加【jì suàn jiā】权和💴S:S = (9×1)+(7×3)+(8×1)+(9×3)+(8×1)+(6×3)+(1×1)+(8×3)+(1×1)+(7×3)+(2×1)+(8×3) = 164

计算S÷10的余数【de yú shù】🤰M:M = 164 mod 10 = 4

计算【jì suàn】☔10 – M 的差N:N = 10 − 4 = 6

如果【rú guǒ】N = 10,校验码🛎是数字"0"

如果💉N为其他数字【shù zì】,校验码🥈是数字【shì shù zì】N 

所以,本书的校验码【xiào yàn mǎ】是6。完整的【wán zhěng de】国际标【guó jì biāo】🆖准书号👴号码为🎂 ISBN 978-986-181-728-6

好了⛸,背景知识介绍【shí jiè shào】到这,下面我写的ISBN码校验😔函数【hán shù】(php版【bǎn】),需要的话可以🐬直接使【zhí jiē shǐ】用🚋:

function isbn_sum($isbn, $len)
{
/*
 * 该函数【gāi hán shù】🧀用于计【yòng yú jì】算【suàn】ISBN加权和😸
 * 参数说🌦明【míng】:
 *   $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)
{
/*
* 该函数【gāi hán shù】🧀用于计【yòng yú jì】算【suàn】ISBN末位校【mò wèi xiào】🐯验码【yàn mǎ】
* 参数说🌦明【míng】:
*   $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)
{
/*
 * 该函数用于判【yòng yú pàn】⏹断是否为【wéi】ISBN号🕉
 * 参数说💇明:
 *    $isbn : isbn码
 */
    $len = strlen($isbn);
    if ($len!=10 && $len!=13)
        return 0;
    $rc = isbn_compute($isbn, $len);
    if ($isbn[$len-1] != $rc)   /* ISBN尾数与【wěi shù yǔ】🚐计算出来的校验码不【yàn mǎ bú】符 */
        return 0;
    else
        return 1;
}

函数写【hán shù xiě】🔷好后,就可以直接调【zhí jiē diào】用了,下面是调用示【diào yòng shì】🍨例🐋:

<?php echo is_isbn('9787507421781') ? '校验通【xiào yàn tōng】过' : '校验失【xiào yàn shī】🐐败🐸'; ?>

关键词:ISBN码

阅读本文后您有什么感想? 已有 人给出评价!

  • 1 欢迎喜欢
  • 1 白痴
  • 1 拜托
  • 1 哇
  • 1 加油
  • 1 鄙视