Bagaimana untuk mengesahkan kod semak nombor kad pengenalan menggunakan ungkapan biasa PHP

WBOY
Lepaskan: 2023-06-24 10:58:02
asal
1773 orang telah melayarinya

Nombor ID ialah dokumen penting yang sering digunakan oleh orang ramai dalam kehidupan seharian, dan pengesahan kod semakan terakhir dalam nombor ID ialah bahagian penting sama ada nombor ID itu sah. Apabila menggunakan pengaturcaraan PHP, kami boleh menggunakan ungkapan biasa untuk mengesahkan kod semak dalam nombor ID untuk memastikan kesahihan nombor ID. Berikut akan memperkenalkan kaedah mengesahkan kod semakan nombor kad ID menggunakan ungkapan biasa PHP.

  1. Format nombor ID

Pertama sekali, kita perlu memahami format nombor ID. Nombor kad pengenalan terdiri daripada 18 digit dan huruf, yang mana 17 digit pertama mewakili wilayah, bandar, daerah, tarikh lahir dan maklumat lain, dan digit terakhir ialah kod semakan. Peraturan pengiraan kod semak adalah seperti berikut:

  1. Darab 17 digit pertama nombor ID dengan faktor berat yang sepadan dalam turutan, iaitu faktor berat digit ke-i ialah Wi.
  2. Tambahkan 17 produk ini untuk mendapatkan S.
  3. Kod semak N ialah baki 11 tolak S dibahagikan dengan 11, dengan X mewakili 10.
  4. Menulis ungkapan biasa

Dengan pengetahuan asas di atas, kami boleh menulis ungkapan biasa untuk mengesahkan nombor ID. Berikut ialah kod sampel:

function checkIDCard($id_card){
    $pattern = '/^d{6}(19|20)d{2}(0d|1[0-2])([0-2]d|3[0-1])d{3}[0-9X]$/';
    if(preg_match($pattern, $id_card)){
        $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
        $ai = str_split(substr($id_card, 0, 17));
        $n = 0;
        for($i=0; $i<17; $i++){
            $n += $wi[$i] * $ai[$i];
        }
        $c = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
        $check_code = $c[$n % 11];
        return $check_code == substr($id_card, -1);
    }
    return false;
}

$id_card = '33010219950917413X';
if(checkIDCard($id_card)){
    echo '身份证号码校验成功';
}else{
    echo '身份证号码校验失败';
}
Salin selepas log masuk

Dalam ungkapan biasa di atas, d bermaksud nombor yang sepadan, {6} bermaksud sepadan 6 kali, (19|20)d{2} bermaksud nombor yang sepadan bermula dengan 19 atau 20 4 digit, (0d|1[0-2]) bermaksud memadankan bulan dari 01 hingga 12, ([0-2]d|3[0-1]) bermaksud memadankan tarikh dari 01 hingga 31, d{3} bermakna Padankan tiga nombor lagi, [0-9X]$ bermakna ia berakhir dengan nombor atau X. Ini akan sepadan dengan nombor ID dengan berkesan.

  1. Pengesahan Ujian

Akhir sekali, kami boleh menguji sama ada kod kami berfungsi. Kami boleh menukar kod pengesahan nombor kad pengenalan untuk menyemak sama ada fungsi pengesahan kod itu normal. Contohnya:

$id_card = '330102199509174133';
Salin selepas log masuk

atau:

$id_card = '330102199509174139';
Salin selepas log masuk

Kod semakan kedua-dua nombor ID ini adalah salah dan tidak sepatutnya lulus pengesahan. Dan apabila kami menjalankan kod, kami akan melihat bahawa keputusan kegagalan pengesahan nombor ID adalah output, membuktikan bahawa kod kami boleh berfungsi seperti biasa.

Ringkasnya, agak mudah untuk menggunakan ungkapan biasa PHP untuk mengesahkan kod semakan nombor ID Anda hanya perlu menulis ungkapan biasa yang sesuai dan fungsi yang berkaitan untuk melengkapkan pengesahan nombor ID dengan mudah. Kerja pengesahan.

Atas ialah kandungan terperinci Bagaimana untuk mengesahkan kod semak nombor kad pengenalan menggunakan ungkapan biasa PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan