Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengesahkan nombor sijil wilayah menggunakan ungkapan biasa PHP

Bagaimana untuk mengesahkan nombor sijil wilayah menggunakan ungkapan biasa PHP

PHPz
PHPzasal
2023-06-24 10:53:181047semak imbas

Dengan perkembangan Internet, kebocoran maklumat peribadi telah menjadi isu yang tidak boleh diabaikan. Sebagai contoh, nombor ID adalah salah satu dokumen pengenalan diri penting yang perlu kami sediakan untuk banyak perkara. Walau bagaimanapun, jika nombor ID digunakan secara berniat jahat atau bocor, ia akan membawa banyak masalah kepada kehidupan kita. Untuk mengukuhkan perlindungan maklumat peribadi, kami boleh menulis program untuk mengesahkan sama ada nombor ID yang dimasukkan oleh pengguna adalah sah, ungkapan biasa PHP adalah kaedah biasa.

1. Peraturan gubahan nombor ID
Sebelum menggunakan ungkapan biasa untuk mengesahkan nombor ID, mari kita fahami peraturan gubahan nombor ID Cina:

1.18 digit identiti Nombor sijil terdiri daripada 17 digit dan 1 kod semakan
2 6 digit pertama ialah kod bahagian pentadbiran kawasan
3 digit ke-7 hingga ke-14, sebagai contoh, 870905 bermaksud 1987 Dilahirkan pada 5 September 2017;
4 digit ke-15 hingga ke-17, yang mewakili urutan di mana orang itu didaftarkan di jabatan pengurusan pendaftaran isi rumah tempatan
5 digit ialah kod semak, digunakan untuk mengesahkan Ketepatan kad ID.

2. Gunakan ungkapan biasa PHP untuk mengesahkan nombor ID

Dalam PHP, gunakan fungsi preg_match() untuk memadankan ungkapan biasa. Berikut ialah kod PHP yang menggunakan ungkapan biasa untuk mengesahkan nombor ID:

function validateIDCard($id_card)
{
    //正则表达式
    $reg = '/^d{17}[0-9x]$/i';
    //匹配
    if(preg_match($reg, $id_card))
    {
        //校验码验证
        $arr = str_split($id_card);
        $last = strtolower($arr[17]) == 'x' ? 10 : $arr[17];
        $card_sum = 0;
        $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
        for($i = 0; $i < 17; $i++)
        {
            $card_sum += $arr[$i] * $wi[$i];
        }
        $card_sum %= 11;
        $card_sum = 12 - $card_sum;
        if($card_sum == 10)
        {
            $card_sum = 'x';
        }
        if($card_sum == strtolower($arr[17]))
        {
            return true;
        }
    }
    return false;
}

Dalam kod ini, kami mula-mula mentakrifkan ungkapan biasa $reg dan dalam ungkapan biasa ini, kami menggunakan ^d {17}[0 -9x]$ sepadan dengan nombor ID 18 digit, dengan d mewakili nombor, {17} mewakili padanan 17 digit dan [0-9x] mewakili digit terakhir boleh menjadi nombor atau huruf x.

Kemudian kami menggunakan fungsi preg_match() untuk melakukan pemadanan biasa. Jika perlawanan berjaya, pengesahan kod pengesahan seterusnya akan diteruskan. Pengesahan kod semak adalah terutamanya dengan mengambil hasil darab setiap digit dan mendarabkannya dengan faktor tetap, dan akhirnya mengesahkan keputusan Jika kod semak adalah betul, ini bermakna nombor ID adalah betul.

3. Rumusan

Ketepatan nombor ID adalah sangat kritikal. Dengan menulis program, kami boleh mengesahkan sama ada nombor ID yang dimasukkan oleh pengguna adalah betul. Artikel ini memperkenalkan cara menggunakan ungkapan biasa PHP untuk mengesahkan nombor ID Saya harap artikel ini dapat membantu semua orang.

Atas ialah kandungan terperinci Bagaimana untuk mengesahkan nombor sijil wilayah menggunakan ungkapan biasa PHP. 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