Cara menggunakan ungkapan biasa PHP untuk mengesahkan sama ada rentetan input berada dalam format nombor kad bank yang betul

PHPz
Lepaskan: 2023-06-24 13:20:01
asal
1408 orang telah melayarinya

Dengan perkembangan pesat ekonomi moden, transaksi kewangan menjadi semakin kerap. Sebagai kaedah pembayaran biasa, kad bank mesti memastikan keselamatan dan ketepatannya. Oleh itu, adalah sangat penting untuk mengesahkan ketepatan nombor kad bank semasa menjalankan transaksi kad bank. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa PHP untuk mengesahkan sama ada rentetan input berada dalam format nombor kad bank yang betul.

Nombor kad bank biasanya disahkan menggunakan algoritma Luhn, yang bermaksud menimbang setiap nombor nombor kad satu demi satu, menambah keputusan dan akhirnya mengambil modulo. Jika hasilnya 0, bermakna format nombor kad bank adalah betul. Operasi khusus adalah seperti berikut:

1 Kira dari kanan ke kiri, digit terakhir nombor kad ialah digit pertama, pusing ke kiri, darab setiap nombor dengan 2, jika nombor itu didarab dengan 2. adalah lebih besar daripada atau sama dengan 10 , kemudian bahagikannya kepada dua nombor dan tambah dua nombor itu.

2. Tambahkan semua nombor yang didarab dengan 2.

3. Mengira dari kanan ke kiri, digit terakhir nombor kad ialah yang pertama, dan pergi ke kiri, darab setiap nombor dengan 1 atau tidak, dan tambahkan hasilnya.

4. Tambahkan keputusan langkah 2 dan langkah 3. Jika hasilnya boleh dibahagikan dengan 10, format nombor kad bank adalah betul.

Proses pengesahan di atas boleh dicapai dengan mudah menggunakan ungkapan biasa PHP. Langkah pelaksanaan khusus adalah seperti berikut:

Langkah 1: Format nombor kad bank
Nombor kad bank hanya boleh mengandungi nombor, jadi anda perlu menggunakan fungsi preg_replace PHP untuk menggantikan aksara bukan angka dalam rentetan dengan ruang.

$bank_card_number = preg_replace('/D/','',$bank_card_number);

Langkah 2: Sahkan panjang rentetan
Panjang nombor kad bank biasanya 16 atau 19 digit , jadi anda perlu menggunakan fungsi strlen PHP untuk mengesahkan sama ada panjang rentetan ialah 16 atau 19.

if(strlen($bank_card_number) !== 16 && strlen($bank_card_number) !== 19){

// 长度不正确
Salin selepas log masuk

}

Langkah 3: Laksanakan pengesahan algoritma Luhn
Gunakan fungsi preg_match PHP digabungkan dengan ungkapan biasa untuk melaksanakan pengesahan algoritma Luhn.

$len = strlen($bank_kad_number);
$sum = 0;
untuk($i = 0; $i < $len; $i++){

$value = intval($bank_card_number[$len - $i - 1]);
$sum += (($i % 2) !== 0) ? (($value * 2) >= 10 ? ($value * 2 - 9) : ($value * 2)) : $value;
Salin selepas log masuk

}
if(($sum % 10) !== 0){

rreee

}

Sekarang, kami menyepadukan kod di atas ke dalam fungsi untuk mengesahkan format nombor kad bank fungsi.

function verify_bank_card_number($bank_card_number) {

// 格式不正确
Salin selepas log masuk

}

Panggil fungsi ini dan masukkan rentetan nombor kad bank untuk menentukan sama ada format nombor kad bank adalah betul.

$bank_card_number = '6228480402564890018';
jika(sahkan_bank_card_number($bank_card_number)){

$bank_card_number = preg_replace('/D/','',$bank_card_number);
if(strlen($bank_card_number) !== 16 && strlen($bank_card_number) !== 19){
    return false;
}
$len = strlen($bank_card_number);
$sum = 0;
for($i = 0; $i < $len; $i++){
    $value = intval($bank_card_number[$len - $i - 1]);
    $sum += (($i % 2) !== 0) ? (($value * 2) >= 10 ? ($value * 2 - 9) : ($value * 2)) : $value;
}
if(($sum % 10) !== 0){
    return false;
}
return true;
Salin selepas log masuk

} lain {

rreee>

rreee>

reeee

Atas ialah kandungan terperinci Cara menggunakan ungkapan biasa PHP untuk mengesahkan sama ada rentetan input berada dalam format nombor kad bank yang betul. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!