Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Amalan ungkapan biasa PHP: memadankan kod ISBN

Amalan ungkapan biasa PHP: memadankan kod ISBN

王林
王林asal
2023-06-23 08:20:531145semak imbas

Kod ISBN ialah kod pengenalan unik untuk buku dan digunakan untuk mengenal pasti Nombor Buku Standard Antarabangsa. Kod ISBN biasanya terdiri daripada 13 digit, yang mana digit terakhir ialah kod semakan yang dikira berdasarkan 12 digit sebelumnya. Dalam PHP, kita boleh menggunakan ungkapan biasa untuk memadankan kod ISBN untuk memastikan ketepatannya.

Format kod ISBN adalah seperti berikut:

ISBN13: 978-7-111-40543-9

Antaranya, tiga digit pertama ialah negara EAN kod, dan keempat hingga keenam Digit ialah kod penerbit, digit ketujuh hingga kedua belas ialah nombor buku, dan digit terakhir ialah kod semakan. Untuk kaedah pengiraan kod semakan, sila rujuk pautan ini: https://zh.wikipedia.org/wiki/International_Standard_Book_Number#EAN/UCC-%E5%9C%B0%E7%90%86%E7%A0% 81%E5% 92%8C%E6%A0%A1%E9%AA%8C%E7%A0%81.

Kita boleh menggunakan ungkapan biasa untuk memadankan kod ISBN13, seperti berikut:

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

Antaranya, "^" dan "$" mewakili permulaan dan penghujung rentetan "[d]" mewakili sebarang nombor A, "{1,5}" bermaksud nombor itu diulang 1 hingga 5 kali; "[dX]" bermaksud sebarang nombor atau huruf X.

Mari kita lihat pelaksanaan kod PHP yang lengkap:

<?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!';
}

?>

Dalam kod ini, kami mentakrifkan fungsi yang dipanggil checkISBN, yang menerima kod ISBN sebagai parameter. Secara dalaman, fungsi pertama kali menggunakan ungkapan biasa untuk melaksanakan pengesahan format pada kod ISBN, kemudian mengira kod semakan berdasarkan 12 digit pertama, dan akhirnya membandingkannya dengan kod semakan kod ISBN asal untuk menentukan sama ada ia sah.

Kita boleh menyimpan kod di atas sebagai fail PHP dan kemudian melaksanakannya dalam baris arahan Hasil output ialah:

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

Jika nilai $isbn ditukar kepada kod ISBN yang tidak sah. , seperti '978 -7-111-40543-0', hasil output ialah:

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

Ringkasan:

Ekspresi biasa ialah alat yang sangat berkuasa dan fleksibel dengan kebolehgunaan yang luas. Dalam PHP, kami boleh menggunakan ungkapan biasa untuk melaksanakan operasi seperti padanan rentetan dan pengesahan format Pengesahan kod ISBN juga sangat mudah. Pembangun boleh menggunakan ungkapan biasa secara fleksibel mengikut keperluan sebenar mereka untuk meningkatkan kecekapan dan kebolehselenggaraan kod.

Atas ialah kandungan terperinci Amalan ungkapan biasa PHP: memadankan kod ISBN. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn