Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ungkapan biasa PHP untuk mengesahkan ketepatan nombor ID

Ungkapan biasa PHP untuk mengesahkan ketepatan nombor ID

PHPz
PHPzasal
2023-06-24 08:49:361665semak imbas

Dalam proses pembangunan laman web, selalunya perlu untuk mengesahkan data yang dimasukkan oleh pengguna, dan pengesahan nombor ID yang terlibat adalah bahagian yang sangat penting daripadanya. Nombor ID ialah satu-satunya bukti identiti peribadi, dan adalah penting untuk mengesahkan ketepatan nombor ID. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa PHP untuk mengesahkan ketepatan nombor ID.

Peraturan asas untuk nombor ID
Nombor ID terdiri daripada 18 digit dan huruf (X), 17 digit pertama adalah dalam format tetap dan digit terakhir mungkin nombor atau "X" ". 6 digit pertama nombor ID ialah kod kawasan, 8 digit tengah ialah tarikh lahir, dan 4 digit terakhir ialah kod semak yang terdiri daripada wilayah, jantina dan nombor jujukan. Antaranya, kod kawasan, tarikh lahir dan kod semak mempunyai peraturan tetap.

Pengesahan nombor ID

Menggunakan fungsi preg_match dalam PHP boleh mengesahkan nombor ID dengan mudah. Parameter pertama fungsi preg_match ialah ungkapan biasa yang akan dipadankan, dan parameter kedua ialah rentetan yang akan dipadankan. Berikut ialah contoh:

$pattern = '/^d{17}[Xd]$/';
$id = '110101199001011234' //nombor ID untuk disahkan
jika ((; preg_match($pattern, $id)) {

//身份证号码格式正确

} else {

//身份证号码格式错误

}

Dalam kod di atas, ungkapan biasa $pattern digunakan untuk mengesahkan sijil pengenalan nombor. Ia menunjukkan bahawa nombor ID hendaklah terdiri daripada 17 digit dan nombor atau huruf "X". Seterusnya, kami akan menerangkan secara terperinci bagaimana pelbagai bahagian nombor ID harus sepadan.

Kod kawasan yang sepadan

6 digit pertama nombor ID ialah kod kawasan, yang menunjukkan bahagian pentadbiran di mana nombor ID itu terletak. Antaranya, dua digit pertama mewakili wilayah, dan empat digit terakhir mewakili bandar atau daerah. Kod kawasan diberikan secara seragam oleh negeri, dan setiap bahagian pentadbiran mempunyai kod yang sepadan.

Kita boleh menggunakan ungkapan biasa berikut untuk memadankan kod kawasan:

$area_pattern = '/^([1-9]d|([1-9][0-9]) d{4})$/';
$area_code = substr($id, 0, 6); //Dapatkan 6 digit pertama kod kawasan daripada nombor ID
if (preg_match($area_pattern, $area_code )) {

//区域代码格式正确

} else {

//区域代码格式错误

}

Dalam kod di atas, ungkapan biasa $area_pattern digunakan untuk memadankan kod kawasan. Ia menunjukkan bahawa kod kawasan hendaklah terdiri daripada 6 digit. $area_code digunakan untuk mengekstrak 6 digit pertama kod kawasan daripada nombor ID.

Tarikh lahir padan

8 digit tengah nombor ID ialah tarikh lahir, menunjukkan tahun, bulan dan hari kelahiran pemegang. Antaranya, 4 digit pertama mewakili tahun, 2 digit terakhir mewakili bulan dan 2 digit terakhir mewakili bilangan hari. Tarikh lahir hendaklah mematuhi peraturan tertentu, seperti tahun tidak boleh melebihi tahun semasa, dsb.

Kita boleh menggunakan ungkapan biasa berikut untuk memadankan tarikh lahir yang betul:

$birthday_pattern = '/^((19|20)d{2})(0[1-9 ] |1[012])(0[1-9]|[12][0-9]|3[01])$/';
$birthday = substr($id, 6, 8); / Dapatkan tarikh lahir 8 digit tengah daripada nombor ID
jika (preg_match($birthday_pattern, $birthday)) {

//出生日期格式正确

} else {

//出生日期格式错误

}

Dalam kod di atas, ungkapan biasa $birthday_pattern digunakan untuk memadankan tarikh lahir yang betul. Ia menunjukkan bahawa tarikh lahir hendaklah terdiri daripada 4 digit mewakili tahun, 2 digit mewakili bulan dan 2 digit mewakili hari. $birthday digunakan untuk mengeluarkan tarikh lahir 8 digit tengah daripada nombor ID.

Kod semakan yang sepadan

Digit terakhir nombor ID ialah kod semakan, yang digunakan untuk mengesahkan sama ada nombor ID itu betul. Kod semakan dikira daripada 17 digit pertama, yang terdiri daripada maklumat seperti wilayah, jantina dan nombor urutan. Melalui algoritma tertentu, kod semakan boleh diperolehi Jika ia sama dengan digit terakhir nombor ID, bermakna nombor ID adalah betul.

Kita boleh menggunakan ungkapan biasa berikut untuk memadankan kod semak:

$check_code_pattern = '/^d{17}[Xd]$/';
if (preg_match($ check_code_pattern, $id)) {

$n = 0;
for ($i = 0; $i < 17; $i++) {
    $n += $id[$i] * pow(2, 17 - $i) % 11;
}
$check_code = $n % 11 == 1 ? 'X' : (12 - $n % 11);
if ($check_code == substr($id, -1)) {
    //身份证号码校验通过
} else {
    //身份证号码校验失败
}

} else {

//身份证号码格式错误

}

Dalam kod di atas, ungkapan biasa $check_code_pattern digunakan untuk memastikan nombor ID sepadan 17 pertama A digit nombor campur digit terakhir atau huruf "X". Jika format nombor ID adalah betul, gunakan algoritma tertentu untuk mengira kod semak $check_code dan bandingkan dengan digit terakhir nombor ID.

Ringkasan

Artikel ini memperkenalkan cara menggunakan ungkapan biasa PHP untuk mengesahkan ketepatan nombor ID. Nombor ID adalah satu-satunya pengenalan peribadi, jadi apabila membangunkan tapak web, pengesahan nombor ID adalah sangat penting. Melalui pengenalan artikel ini, saya percaya bahawa semua orang boleh menggunakan ungkapan biasa PHP untuk mengesahkan nombor ID dengan mudah.

Atas ialah kandungan terperinci Ungkapan biasa PHP untuk mengesahkan ketepatan nombor ID. 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