Rumah pembangunan bahagian belakang masalah PHP Bagaimana untuk menjana aksara tidak berulang 18-bit dalam php

Bagaimana untuk menjana aksara tidak berulang 18-bit dalam php

Mar 29, 2023 am 10:10 AM

Dalam pembangunan web, selalunya perlu menjana beberapa aksara rawak yang tidak berulang, seperti nombor pesanan, kod pengesahan, dsb. PHP ialah bahasa pembangunan yang digunakan secara meluas, dan kami boleh menggunakan PHP dengan mudah untuk melaksanakan fungsi ini. Artikel ini akan memperkenalkan cara menjana aksara tidak berulang 18-bit yang unik dalam PHP, serta algoritma dan teknik yang sepadan.

1. Gunakan nombor rawak untuk menjana aksara unik

Dalam php, kita boleh menggunakan fungsi rand() atau mt_rand() untuk menjana nombor rawak. Walau bagaimanapun, nombor rawak yang dijana oleh kaedah ini mungkin berulang, jadi beberapa kemahiran diperlukan untuk memastikan aksara yang dijana tidak berulang.

Berikut ialah kaedah mudah:

1 Tentukan rentetan kosong $chars untuk menyimpan aksara yang dijana

2. gunakan fungsi strpos() untuk mencari sama ada aksara itu sudah wujud dalam $chars, jana semula aksara rawak

3 rentetan.

Berikut ialah contoh kod:

function generateRandomString($length) {
  $chars = "";

  while (strlen($chars) < $length) {
    $char = chr(mt_rand(65, 90)); // 生成65-90的随机数字
    if (strpos($chars, $char) === false) { // 判断$char是否已经在$chars中出现过
      $chars .= $char;
    }
  }

  return $chars;
}

echo generateRandomString(18);
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi mt_rand() untuk menjana nombor rawak antara 65 dan 90, dan kemudian gunakan chr( ) fungsi untuk menjana nombor ini Tukar kepada aksara yang sepadan. Oleh kerana rentetan rawak yang dijana mungkin diulang, gunakan fungsi strpos() untuk mencari sama ada aksara itu sudah wujud, dan ulangi proses menjana aksara rawak dan mencari melalui gelung sementara sehingga jumlah bilangan aksara yang dijana mencapai panjang yang ditetapkan, dan pulangan hasil.

2. Gunakan cap masa dan nombor rawak untuk menjana aksara unik

Kaedah di atas sudah boleh melengkapkan fungsi menjana aksara unik, tetapi disebabkan keperluan untuk mencari aksara yang dijana berulang kali, ia adalah perlu Kuasa pengkomputeran mungkin agak tinggi. Dalam situasi di mana akses serentak adalah tinggi dan bilangan aksara yang dijana adalah besar, masalah prestasi terdedah kepada berlaku.

Oleh itu, kita boleh menggunakan kaedah cap waktu + nombor rawak untuk menjana aksara unik.

Berikut ialah idea:

1 Hasilkan cap masa yang unik dan tukarkannya kepada rentetan perenambelasan; 2. Hasilkan rentetan rawak empat digit ke hadapan rentetan cap masa untuk menjadikannya 20 digit panjang

3 Gunakan fungsi substr() untuk memintas 16 digit terakhir rentetan cap masa sebagai aksara rawak yang dijana.

Berikut ialah contoh kod:

Dalam kod di atas, kami mula-mula menjana rentetan cap masa 16-bit, menukarnya menjadi rentetan 36 digit, dan kemudian menjana Rentetan rawak dengan panjang yang ditentukan. Akhir sekali, dua rentetan digabungkan, dan fungsi substr() digunakan untuk mendapatkan subrentetan berikutnya bagi panjang yang ditentukan, iaitu aksara tidak berulang yang dihasilkan.
function generateNonceStr($length = 18) {
  $timestamp = uniqid('', false);
  $nonce_str = substr($timestamp, 4) . substr(mt_rand(1000, 9999), 0, 4);
  return substr($nonce_str, -$length);
}

echo generateNonceStr();
Salin selepas log masuk

3. Ringkasan

Artikel ini memperkenalkan dua kaedah menjana aksara unik, antaranya kaedah penggunaan cap masa dan penjanaan nombor rawak adalah lebih praktikal dan cekap. Untuk situasi seperti menjana nombor pesanan dalam senario berkaitan pembayaran, algoritma dan peraturan yang lebih lengkap harus digunakan untuk memastikan nombor pesanan yang dijana bukan sahaja bukan pendua, tetapi juga mengelakkan penampilan aksara atau nombor tertentu, mengurangkan risiko sedang diserang.

Atas ialah kandungan terperinci Bagaimana untuk menjana aksara tidak berulang 18-bit dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1662
14
Tutorial PHP
1262
29
Tutorial C#
1235
24