ホームページ >バックエンド開発 >PHPチュートリアル >入力文字列が正しい ISBN エンコード形式であることを確認するための PHP 正規表現
国際標準書籍番号である
ISBN (国際標準書籍番号) は、書籍を識別するために使用される連続番号です。これは 10 桁または 13 桁で構成され、その正確性を保証するために特定の計算によって検証されます。この記事では、PHP 正規表現を使用して、入力文字列が正しい ISBN エンコード形式であることを確認する方法を紹介します。
ISBN エンコード形式
ISBN エンコードは 10 桁または 13 桁で構成され、最初の 9 桁が書籍識別コード、10 桁目がチェックコードです。 13 桁の ISBN コードの場合、最初の 3 桁は国または地域コード、次に出版社の識別コード、書籍の識別コード、最後にチェック コードが続きます。 10 桁の ISBN コードの場合、最初の 9 桁は書籍識別コードでもありますが、国または地域コードや出版社識別コードはなく、最後の 1 桁は依然としてチェック コードです。
検証ルール
検証ルールは次のとおりです:
10 桁の ISBN コードの場合: チェック コードは最後の 1 桁で、計算ルールは次のとおりです。 : 最初の 9 桁を加算します。 1 から 9 までの重み係数をそれぞれ乗算し、これらの 9 つの積を加算して合計を求めます。次に、この合計の余りを 11 にし、11 から余りを減算してチェック コードを取得します。余りが 10 の場合、チェック コードは大文字の X になります。
13 桁の ISBN エンコードの場合: チェック コードは最後の桁で、計算規則は次のとおりです。最初の 12 桁にそれぞれ 1 または 3 の重み係数を乗算し、これらの 13 の積を加算します。合計を取得します。次に、この合計の余りを 10 にし、10 から余りを減算してチェック コードを取得します。
PHP 正規表現
以下は、入力文字列が正しい ISBN エンコード形式であるかどうかを確認するために使用される PHP 正規表現のコードです。
10 桁の ISBN コードの場合:
function checkISBN10($isbn) { if (!preg_match('/^d{9}[d|X]$/i', $isbn)) { return false; } $checkbit = 0; for ($i = 0; $i < 9; $i++) { $checkbit += intval($isbn{$i}) * (10 - $i); } $checkbit = ($checkbit % 11 == 0) ? 0 : 11 - ($checkbit % 11); return ($isbn{9} == ($checkbit == 10 ? 'X' : strval($checkbit))); }
13 桁の ISBN コードの場合:
function checkISBN13($isbn) { if (!preg_match('/^d{13}$/i', $isbn)) { return false; } $checkbit = 0; for ($i = 0; $i < 12; $i++) { $checkbit += intval($isbn{$i}) * (($i % 2 == 0) ? 1 : 3); } $checkbit = 10 - ($checkbit % 10); return ($isbn{12} == strval($checkbit)); }
これら 2 つの関数は、ISBN コードを入力として受け入れ、ブール値を返します。コードが法的な ISBN コードであるかどうか。正当なエンコーディングの場合は true を返し、そうでない場合は false を返します。
これらの関数は、正規表現を使用して、入力が ISBN エンコード形式に準拠しているかどうかを確認します。次に、検証ルールを使用してチェック コードを計算し、それを入力エンコーディングのチェック コードと比較して、エンコーディングが正当であるかどうかを判断します。
結論
この記事では、PHP 正規表現を使用して、入力文字列が正しい ISBN エンコード形式であるかどうかを確認する方法を紹介します。 ISBN エンコードの検証ルールは比較的複雑ですが、正規表現の強力な機能を利用すると、この検証を簡単に実装できます。開発者はこれらの関数を使用して、ユーザーが入力した ISBN コードをチェックし、その正確性を確認できます。
以上が入力文字列が正しい ISBN エンコード形式であることを確認するための PHP 正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。