ホームページ  >  記事  >  php教程  >  ISBNコードを検証するためのPHP関数コード

ISBNコードを検証するためのPHP関数コード

WBOY
WBOYオリジナル
2016-06-13 12:12:00912ブラウズ

詳細については、次を参照してください: International Standard Book Number – Wikipedia ISBN コードについて簡単に説明します:
International Standard Book Number (ISBN; 発音はイズベン) は、国際的に受け入れられているコードです。書籍または出版物の独立したコード (定期的に発行されるジャーナルを除く)。出版社は、国際標準図書番号によって、ジャーナル以外のすべての書籍を明確に識別できます。 ISBN には、それに対応する対応出版物が 1 つだけあります。新しいバージョンが元の古いバージョンに基づいて内容に大きな変更がない場合、発行時に新しい ISBN 番号は付与されません。出版のためにペーパーバック版をハードカバー版に変更する場合、元の対応する ISBN 番号も削除する必要があります。
通常、ISBN コードは 10 桁と 13 桁の 2 種類あります。10 桁の ISBN コードは 2007 年 1 月に廃止されました。現在、新刊書籍の ISBN コードはすべて 13 桁です。厳格な図書館管理プログラムでは多くの側面を考慮する必要があることを考慮すると、10 桁の ISBN コードを持つ書籍が依然として膨大な数に存在するため、書籍の ISBN コードの正確性を検証するには、10 桁と ISBN コードの両方を考慮する必要があります。 13 桁の ISBN コード。 Wikipedia から、ISBN コードの最後の桁がチェック コードであることがわかります。実際、ISBN コードの精度を確認したい場合は、ISBN のチェック コードを計算して、ISBN コードが一致するかどうかを確認する必要があります。最後の桁。ここで言及する検証は、ISBN が構成において合法であるかどうかを検証するだけであり、出版された書籍の ISBN であるかどうかは検証しません。以下は、Wikipedia が提供する ISBN コード検証アルゴリズムです。
チェック コード (10 桁) の計算方法
国際標準書籍番号の最初の 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 ? 6 = 5
N = 10 の場合、チェック コードは次のようになります。文字「X」
N = 11 の場合、チェック コードは数字「0」です
N が別の数字の場合、チェック コードは数字 N です
したがって、この本のチェック コードは次のようになります5; ユーザーが指定した ISBN コードが 7-309-04547-6 の場合、チェックは失敗します
チェック ディジット (13 桁) の計算方法
最初の 12 桁を想定しますISBN 番号は: 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 の N の違いを計算します – M: N = 10 ? 4 = 6
N = 10 の場合、チェック コードは数値「0」です
N が別の数値の場合、チェックコードはNという数字です
つまり、この本のチェックコードは6です。完全な国際標準図書番号は ISBN 978-986-181-728-6 です。
予備知識としては以上です。以下は私が作成した ISBN コード検証機能 (php バージョン) です。必要に応じて直接使用できます。 :

コードをコピー コードは次のとおりです:


function 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];
else
$sum = $sum (int)$isbn[$i] * 3;
}
}
return $sum; function 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)
else
$ rc = (文字列)$digital;
}
else if($len == 13)
{
$digital = 10 - isbn_sum($isbn, $len) % 10; if ($digital == 10)
$rc = '0';
$rc = (string)$digital
}
return $rc; 🎜>function is_isbn($isbn)
{
/*
* この関数は、ISBN 番号であるかどうかを判断するために使用されます
* パラメータの説明:
* $isbn : isbn コード
*/
$len = strlen ($isbn);
if ($len!=10 && $len!=13)
return
$rc = isbn_compute($isbn, $len);
if ($isbn [$len-1] != $rc) /* ISBN 仮数部が計算されたチェック コードと一致しません*/
return
else
return 1;
}


関数を作成した後、直接呼び出すことができます。



コードをコピーします。 🎜>
コードは次のとおりです。


>
さらに、オンライン ISBN 検証ツールを作成しました。このツールを使用して、ISBN コードの正当性をオンラインで検証できます。次のリンクをクリックして使用できます: ISBN コード オンライン検証ツール。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。