ホームページ  >  記事  >  バックエンド開発  >  PHP 正規表現の練習: ISBN コードの照合

PHP 正規表現の練習: ISBN コードの照合

王林
王林オリジナル
2023-06-23 08:20:531165ブラウズ

ISBN コードは書籍の一意の識別コードであり、国際標準書籍番号を識別するために使用されます。 ISBN コードは通常 13 桁で構成され、最後の桁は前の 12 桁に基づいて計算されるチェック コードです。 PHP では、正規表現を使用して ISBN コードを照合し、その正確さを保証できます。

ISBN コードの形式は次のとおりです。

ISBN13: 978-7-111-40543-9

このうち、最初の 3 桁が EAN の国です。コードの4桁目から6桁目は出版社コード、7桁目から12桁目は書籍番号、最後の桁はチェックコードです。チェックコードの計算方法については、https://zh.wikipedia.org/wiki/International_Standard_Book_Number#EAN/UCC-Geographic Code and Check Codeを参照してください。

次のように、正規表現を使用して ISBN13 コードと一致させることができます:

$pattern = '/^978-[d]{1,5}-[d]{1,7}-[d]{1,6}-[dX]$/';

このうち、「^」と「$」は文字列の先頭と末尾を表し、「[d]」は文字列の先頭と末尾を表します。は任意の数値を表し、「{1,5}」は数値が 1 ~ 5 回繰り返されることを意味し、「[dX]」は任意の数値または文字 X を意味します。

完全な PHP コード実装を見てみましょう:

<?php
function checkISBN($isbn) {
    $pattern = '/^978-[d]{1,5}-[d]{1,7}-[d]{1,6}-[dX]$/';
    if (preg_match($pattern, $isbn)) {
        $digits = str_replace('-', '', substr($isbn, 0, -1));
        $length = strlen($digits);
        $sum = 0;
        for ($i = 0; $i < $length; $i++) {
            $sum += intval($digits[$i]) * (($i % 2 == 0) ? 1 : 3);
        }
        $checkDigit = 10 - ($sum % 10);
        if ($checkDigit == 10) {
            $checkDigit = 'X';
        }
        return $checkDigit == substr($isbn, -1);
    } else {
        return false;
    }
}

$isbn = '978-7-111-40543-9';
if (checkISBN($isbn)) {
    echo $isbn . ' is a valid ISBN!';
} else {
    echo $isbn . ' is not a valid ISBN!';
}

?>

このコードでは、ISBN コードをパラメーターとして受け取る checkISBN という名前の関数を定義します。内部的には、関数はまず正規表現を使用して ISBN コードの形式検証を実行し、次に最初の 12 桁に基づいてチェック コードを計算し、最後に元の ISBN コードのチェック コードと比較して有効かどうかを判断します。

上記のコードを PHP ファイルとして保存し、コマンド ラインで実行すると、出力結果は次のようになります:

978-7-111-40543-9 is a valid ISBN!

$isbn の値が不正な ISBN コードに変更された場合'978 -7-111-40543-0' など、出力結果は次のようになります:

978-7-111-40543-0 is not a valid ISBN!

概要:

正規表現は、幅広い適用範囲を備えた非常に強力で柔軟なツールです。 PHPでは正規表現を使って文字列のマッチングや形式の検証を行うことができ、ISBNコードの検証も非常に便利です。開発者は、実際のニーズに応じて正規表現を柔軟に使用して、コードの効率と保守性を向上させることができます。

以上がPHP 正規表現の練習: ISBN コードの照合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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