PHP で正規表現を使用して本の ISBN 番号形式を検証する方法

王林
リリース: 2023-06-22 09:32:01
オリジナル
1618 人が閲覧しました

正規表現は、入力データが指定された形式要件を満たしているかどうかを効果的に検証できる強力なテキスト マッチング ツールです。図書館管理システムなどのアプリケーションにおいて、ISBN(International Standard Book Number)は注目すべきデータ形式であり、その形式には一定の規則があります。この記事では、PHP で正規表現を使用して書籍の ISBN 番号形式を検証し、システムが ISBN 番号関連のビジネス ロジックを正しく処理できることを確認する方法を紹介します。

  1. ISBN 番号形式の規則

ISBN 番号は、書籍を一意に識別するために使用される標準番号で、通常は ISBN-10 および ISBN-13 形式が含まれます。 ISBN-10 形式は 10 桁で構成され、最後の桁は X になる場合がありますが、ISBN-13 形式は 13 桁で構成されます。この記事では、ISBN-13 形式に焦点を当て、それが正規表現を使用して整形式であることを確認します。

ISBN-13 番号の形式規則は次のとおりです:

(1) 最初の 3 桁は書籍の国または言語の違いを示します。国が異なると接頭辞の桁も異なります。または地域。たとえば、中国のプレフィックス番号は 978 または 979 です。

(2) 次の 9 桁は、出版社によって各書籍に割り当てられる書籍の登録番号です。

(3) 最後の桁はチェック ディジット (Check Digit) です。チェック ディジットの計算方法は次のとおりです。

1) 最初の 12 桁を法に従って加重合計します。重み、このうち偶数桁の重みは 3、奇数桁の重みは 1;

2) 結果を 10 で割って余りを求め、10 から余りを引きます。違いはチェックコードです。

たとえば、「初心者からマスターまでの PHP および MySQL 開発」という書籍の ISBN-13 番号は 978-7-81037-609-2 で、最初の 12 桁の加重合計は 1x です。 9 3×7 1×8 3×8 1×1 3×0 1×3 3×7 1×6 3×0 1×9 3×2=99、余りを9として、10から余りを引くと次のようになります。 1 (最後) ビット チェック コードは 1 です。

  1. PHP で正規表現を使用して ISBN 番号形式を確認する

ISBN 番号形式が正しいかどうかを確認するには、正規表現関数 preg_match( ) PHP の構文は次のとおりです:

preg_match(string $pattern, string $subject, array &$matches = null, int $flags = 0, int $offset = 0): int|false
ログイン後にコピー

このうち、 $pattern は正規表現パターン、 $subject は照合する文字列、 $matches は照合結果の配列、 $flags はオプションですフラグ、$offset は開始一致の場所です。一致が成功した場合、関数は 1 を返し、一致が失敗した場合、関数は 0 を返します。

以下は、PHP 正規表現を使用して ISBN-13 数値形式を検証するサンプル コードです:

function is_valid_isbn($isbn) {
    $pattern = '/^97[89]d{10}$/'; // 匹配 ISBN-13 号码格式的正则表达式
    if(preg_match($pattern, $isbn)) { // 使用 preg_match() 函数进行匹配
        $digits = str_split($isbn);
        $check_digit = 0; // 校验码的计算过程
        for($i=0; $i<12; $i+=2) {
            $check_digit += $digits[$i] + 3 * $digits[$i+1];
        }
        $check_digit = (10 - $check_digit % 10) % 10;
        return $digits[12] == $check_digit;
    }
    else {
        return false;
    }
}

// 验证 ISBN-13 号码格式
$isbn1 = '978-7-81037-609-1';
$isbn2 = '978-7-81037-609-2';
if(is_valid_isbn(str_replace('-', '', $isbn1))) {
    echo $isbn1.' 是一个有效的 ISBN-13 号码。';
}
else {
    echo $isbn1.' 不是一个有效的 ISBN-13 号码。';
}
if(is_valid_isbn(str_replace('-', '', $isbn2))) {
    echo $isbn2.' 是一个有效的 ISBN-13 号码。';
}
else {
    echo $isbn2.' 不是一个有效的 ISBN-13 号码。';
}
ログイン後にコピー

上記のサンプル コードでは、最初に is_valid_isbn() という名前の関数を定義します。パラメータは検証する ISBN 番号です。この関数は、まず正規表現を使用して ISBN-13 番号の形式が正しいかどうかを検証し、形式が正しい場合はチェック コードを計算し、最後の桁と比較して ISBN 番号が有効かどうかを判断します。このうち、str_replace('-', '', $isbn) は、ISBN 番号のダッシュ区切り文字を削除して計算するために使用されます。

最後に、関数の有効性を検証するために、いくつかの ISBN 番号でテストできます。この関数は、入力された ISBN 番号が正しい形式で、チェックサムが正しく計算された場合は true を返し、それ以外の場合は false を返します。このようにして、入力された ISBN 番号がルールに準拠しているかどうかを効果的に検証し、システムが ISBN 関連のビジネス ロジックを正しく処理できることを確認できます。

  1. 結論

この記事では、PHP で正規表現を使用して書籍の ISBN-13 番号の形式が正しいかどうかを確認し、書籍の ISBN-13 番号の形式が正しいかどうかを効果的に判断する方法を紹介します。入力データはルールに準拠しています。実際の開発では、実際のニーズに応じてさまざまな正規表現パターンを定義し、さまざまなデータ形式の検証ニーズに適応できます。正規表現は非常に強力なテキスト マッチング ツールであり、開発者が正規表現の使用スキルを習得することが重要です。

以上がPHP で正規表現を使用して本の ISBN 番号形式を検証する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート