PHP校驗ISBN碼的函式

2022-09-23 20:24:12 字數 1766 閱讀 4132

最近在編寫乙個圖書管理程式的時候,需要校驗圖書isbn碼正確性,查了一些資料,了解了圖書isbn碼的構成,詳細資料可以參考:國際標準書號 – 維基百科,下面還是簡述一下什麼是isbn碼:

國際標準書號(international standard book number,isbn;擬發音is-ben),是國際通用的圖書或獨立的出版物(除定期出版的期刊)**。出版社可以通過國際標準書號清晰的辨認所有非期刊書籍。乙個國際標準書號只有乙個或乙份相應的出版物與之對應。新版本如果在原來舊版的基礎上沒有內容上太大的變動,在出版時也不會得到新的國際標準書號碼。當平裝本改為精裝本出版時,原來相應的國際標準書號號碼也應當收回。

平常我們能夠見到的isbn碼有10位和13位兩種,其中10位的isbn自2023年1月起已經停止使用,目前新出版的圖書isbn碼都是13位。考慮到乙個嚴謹的圖書管理程式要考慮到多方面的問題,因為10位isbn碼的圖書還是有巨大的存世量的,所以要校驗圖書isbn碼的正確性,就必須同時考慮10位和13位的情況。從維基百科可以了解到isbn碼最後一位是校驗碼,其實要想校驗isbn碼的正確,就是通過計算isbn的校驗碼,看是否與最後一位吻合。這裡所說的校驗也只是校驗isbn在構成上是否合法,而不會校驗是否為已發行圖書的isbn。下面是維基百科提供的isbn碼校驗演算法:

校驗碼的計算方法(10碼)

所以,本書的校驗碼是5;如果使用者提供的isbn碼是7-309-04547-6,那麼校驗失敗

校驗碼的計算方法(13碼)

所以,本書的校驗碼是6。完整的國際標準書號號碼為 isbn 978-986-181-728-6

好了,背景知識介紹到這,下面我寫的isbn碼校驗函式(php版),需要的話可以直接使用: 1

2 34 5

6 78 9

10 11

12 13

14 15

16 17

18 19

20 21

22 23

24 25

26 27

28 29

30 31

32 33

34 35

36 37

38 39

40 41

42 43

44 45

46 47

48 49

50 51

52 53

54 55

56 57

58 59

60 61

62 63

64 65

66 67

68 69

70 71

72 73

74 75

76 77

78 79

80 81

82 83

84 85

86 87

88 89

/*** 名稱: php校驗isbn碼的函式

* 作者:露兜

* 部落格:

* 最後修改:2023年09月26日

*/function isbn_sum($isbn, $len)

}elseif ($len == 13)

}return $sum; }

function isbn_compute($isbn, $len)

else if($len == 13)

return $rc; }

function is_isbn($isbn)

函式寫好後,就可以直接呼叫了,下面是呼叫示例: 1

<?php  echo is_isbn('9787507421781') ? '校驗通過' : '校驗失敗'; ?>

校驗碼的概念 差錯校驗碼

1.什麼是糾錯 什麼是檢錯 檢錯就是把錯誤檢查出來 而糾錯則是把錯誤檢查出來後還要糾正 2.碼距 乙個編碼系統的碼距是整個編碼系統中任意兩個碼字的最小距離。若用一位長度的二進位制編碼,若a 1 b 0 最小碼距就是1 若用二位長度的二進位制編碼,若a 11 b 00 最小碼距就是2 以此類推 3.如...

PHP實現驗證碼校驗功能

驗證碼的校驗是利用php中的 session功能來實現。在最頂端宣告函式 session start 告訴伺服器我們要用這個函式的功能。session start 接下來我們用到的就是驗證碼實現的 這裡用英文數字的 為例。image imagecreatetruecolor 100,30 建立乙個1...

php中的時間格式校驗函式

如何校驗使用者輸入的時間是否是合要求的?其實很簡單 判斷時間格式是否正確 param string param 輸入的時間 param string format 指定的時間格式 return boolean function isdatetime param format y m d h i s ...