ホームページ > バックエンド開発 > PHPチュートリアル > ISBN コードを確認する PHP 関数_PHP チュートリアル

ISBN コードを確認する PHP 関数_PHP チュートリアル

WBOY
リリース: 2016-07-21 14:52:31
オリジナル
834 人が閲覧しました

最近、図書館管理プログラムを作成していたときに、書籍の ISBN コードが正しいことを確認する必要があり、いくつかの情報を確認し、書籍の ISBN コードの構成について学びました。詳細については、「国際標準」を参照してください。書籍番号 – Wikipedia ISBN コードについて簡単に説明します。

国際標準書籍番号 (ISBN、発音は「is-ben」であることを意図しています) は、書籍または独立した出版物 (定期的に発行される雑誌を除く) に対して国際的に受け入れられているコードです。出版社は、国際標準図書番号によって、ジャーナル以外のすべての書籍を明確に識別できます。 ISBN には、それに対応する対応出版物が 1 つだけあります。新しいバージョンが元の古いバージョンに基づいて内容に大きな変更がない場合、発行時に新しい ISBN 番号は付与されません。出版のためにペーパーバック版をハードカバー版に変更する場合、元の対応する ISBN 番号も削除する必要があります。

私たちが普段目にするISBNコードは10桁と13桁です 2007年1月から10桁のISBNコードは廃止され、現在新刊書籍のISBNコードはすべて13桁です。厳格な図書館管理プログラムでは多くの側面を考慮する必要があることを考慮すると、10 桁の ISBN コードを持つ書籍が依然として膨大な数に存在するため、書籍の ISBN コードの正確性を検証するには、10 桁と ISBN コードの両方を考慮する必要があります。 13 桁の ISBN コード。 Wikipedia から、ISBN コードの最後の桁がチェック コードであることがわかります。実際、ISBN コードの精度を確認したい場合は、ISBN のチェック コードを計算して、ISBN コードが一致するかどうかを確認する必要があります。最後の桁。ここで言及する検証は、ISBN が構成において合法であるかどうかを検証するだけであり、出版された書籍の ISBN であるかどうかは検証しません。以下は、Wikipedia が提供する ISBN コード検証アルゴリズムです:

チェックコード(10桁)の計算方法

ISBN 番号の最初の 9 桁が 7-309-04547 であるとします

加重和Sを計算します: S = 7×10+3×9+0×8+9×7+0×6+4×5+5×4+4×3+7×2 = 226

S÷11の余りMを計算します: M = 226 mod 11 = 6

11 – M の差 N を計算します: N = 11 ? = 5

N = 10の場合、チェックコードは文字「X」です

N = 11の場合、チェックコードは数字「0」です

Nが別の数値の場合、チェックコードは数値Nになります

つまり、この本のチェック コードは 5 です。ユーザーが指定した ISBN コードが 7-309-04547-6 の場合、チェックは失敗します

チェックコード(13桁)の計算方法

ISBN 番号の最初の 12 桁が 978-986-181-728 であると仮定します

加重合計 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の余りMを計算します: M = 164 mod 10 = 4

10 – M の差 N = 10 ? を計算します

N = 10の場合、チェックコードは数字「0」です

Nが別の数値の場合、チェックコードは数値Nになります

ということで、この本のチェックコードは6です。完全な国際標準図書番号は ISBN 978-986-181-728-6 です

これで予備知識は終わりです。以下は私が作成した ISBN コード検証関数 (php バージョン) です。必要に応じて直接使用できます。

関数isbn_sum($isbn, $len)
{
/*
※この関数はISBNの加重和を計算するために使用されます
* パラメータの説明:
* $isbn: isbn コード
* $len : isbn コードの長さ
*/
$sum = 0;
If ($len == 10)
{
for ($i = 0; $i {
$sum = $sum + (int)$isbn[$i] * ($len - $i);
}
}
elseif ($len == 13)
{
for ($i = 0; $i {
if ($i % 2 == 0)
$sum = $sum + (int)$isbn[$i];
その他
$sum = $sum + (int)$isbn[$i] * 3;
}
}
$sum を返します;
}
関数isbn_compute($isbn, $len)
{
/*
※この関数はISBN最後の桁のチェックコードを計算するために使用されます
* パラメータの説明:
* $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';
その他
$rc = (文字列)$桁;
}
else if($len == 13)
{
$digit = 10 -isbn_sum($isbn, $len) % 10;

if ($digit == 10)
$rc = '0';
その他
$rc = (文字列)$桁;
}
$rc を返します;
}
関数 is_isbn($isbn)
{
/*
※この関数はISBN番号かどうかを判定するために使用されます
* パラメータの説明:
* $isbn: isbn コード
*/
$len = strlen($isbn);
If ($len!=10 && $len!=13)
0 を返す;
$rc = isbn_compute($isbn, $len);
If ($isbn[$len-1] != $rc) /* ISBN 仮数部が計算されたチェック コードと一致しません */
0 を返す;
それ以外
return 1;
}

関数を作成した後、それを直接呼び出すことができます。以下は呼び出し例です。

原文: http://www.ludou.org/php-check-isbn.html

http://www.bkjia.com/PHPjc/371628.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/371628.html技術記事最近、図書館管理プログラムを作成しているときに、書籍の ISBN コードが正しいことを確認する必要があり、いくつかの情報を確認し、書籍の ISBN コードの構成について学びました。詳細については、「国際標準」を参照してください。 .
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート