Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ungkapan biasa PHP untuk mengesahkan bahawa rentetan input berada dalam format pengekodan ISBN yang betul

Ungkapan biasa PHP untuk mengesahkan bahawa rentetan input berada dalam format pengekodan ISBN yang betul

WBOY
WBOYasal
2023-06-24 21:18:321389semak imbas

ISBN (International Standard Book Number), Nombor Buku Standard Antarabangsa, ialah nombor berturut-turut yang digunakan untuk mengenal pasti buku. Ia terdiri daripada sepuluh atau tiga belas digit dan disahkan oleh pengiraan tertentu untuk memastikan ketepatannya. Dalam artikel ini, kami akan memperkenalkan cara menggunakan ungkapan biasa PHP untuk mengesahkan bahawa rentetan input berada dalam format pengekodan ISBN yang betul.

Format pengekodan ISBN

Pengekodan ISBN terdiri daripada 10 atau 13 digit 9 digit pertama ialah kod pengenalan buku, dan digit ke-10 ialah kod semak. Untuk kod ISBN 13 digit, tiga digit pertama ialah kod negara atau wilayah, diikuti dengan kod pengenalan penerbit, kemudian kod pengenalan buku, dan akhirnya kod semak. Untuk kod ISBN 10 digit, 9 digit pertama juga merupakan kod pengenalan buku, tetapi tiada kod negara atau wilayah dan kod pengenalan penerbit, dan digit terakhir masih merupakan kod semak.

Peraturan pengesahan

Peraturan pengesahan adalah seperti berikut:

Untuk pengekodan ISBN 10 digit: kod semak ialah digit terakhir, dan peraturan pengiraan adalah seperti berikut: darab 9 digit pertama dengan pekali berat 1~ 9, dan kemudian 9 produk ini ditambah bersama untuk mendapatkan jumlah keseluruhan. Kemudian ambil baki jumlah ini kepada 11, dan tolak baki daripada 11 untuk mendapatkan kod semak. Jika bakinya ialah 10, kod semak ialah huruf besar X.

Untuk pengekodan ISBN 13 digit: kod semak ialah digit terakhir dan peraturan pengiraan adalah seperti berikut: darab 12 digit pertama dengan pekali berat masing-masing 1 atau 3, kemudian tambah 13 produk ini untuk mendapatkan jumlah . Kemudian ambil baki jumlah ini kepada 10, dan kemudian tolak baki daripada 10 untuk mendapatkan kod semak.

Ungkapan Biasa PHP

Di bawah ialah kod untuk ungkapan biasa PHP untuk mengesahkan sama ada rentetan input berada dalam format pengekodan ISBN yang betul.

Untuk kod ISBN 10 digit:

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)));
}

Untuk kod ISBN 13 digit:

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));
}

Dua fungsi ini masing-masing menerima kod ISBN sebagai input dan mengembalikan nilai Boolean yang menunjukkan sama ada kod itu adalah kod ISBN yang sah. Jika ia adalah pengekodan yang sah, kembalikan benar, sebaliknya kembalikan palsu.

Fungsi ini menggunakan ungkapan biasa untuk menyemak sama ada input mematuhi format yang dikodkan ISBN. Kemudian gunakan peraturan pengesahan untuk mengira kod semak dan bandingkan dengan kod semak dalam pengekodan input untuk menentukan sama ada pengekodan itu sah.

Kesimpulan

Artikel ini menerangkan cara menggunakan ungkapan biasa PHP untuk mengesahkan bahawa rentetan input berada dalam format pengekodan ISBN yang betul. Walaupun peraturan pengesahan pengekodan ISBN agak rumit, dengan bantuan fungsi kuat ungkapan biasa, kami boleh melaksanakan pengesahan ini dengan mudah. Pembangun boleh menggunakan fungsi ini untuk menyemak kod ISBN yang dimasukkan oleh pengguna untuk memastikan ketepatannya.

Atas ialah kandungan terperinci Ungkapan biasa PHP untuk mengesahkan bahawa rentetan input berada dalam format pengekodan ISBN yang betul. 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