Perkhidmatan memendekkan URL seperti TinyURL secara berkesan memekatkan URL yang panjang menjadi rentetan yang lebih pendek dan lebih terurus. Perkhidmatan ini menggunakan teknik pencincangan untuk mencapai matlamat ini.
Walau bagaimanapun, tidak seperti pengekodan integer asas 36 TinyURL, fungsi PHP yang mencipta cincang sebenar akan menjadi tumpuan perbincangan ini. Matlamatnya adalah untuk menjana cincangan yang tidak lebih daripada 8 aksara.
Memahami Pencirian untuk Pemendekkan URL
Pencapaian ialah operasi matematik yang mengubah input panjang berubah-ubah menjadi rentetan panjang tetap yang dipanggil cincang. Output adalah unik untuk input tertentu dan tidak boleh diterbalikkan, menjadikannya sesuai untuk keselamatan data dan memendekkan URL.
Pelaksanaan PHP
Pertimbangkan fungsi PHP berikut berdasarkan Algoritma MurmurHash3:
<code class="php">function murmurHash3($data) { $nblocks = strlen($data) >> 2; $h1 = 0; $c1 = 0xcc9e2d51; $c2 = 0x1b873593; $r1 = 15; $r2 = 13; $m = 5; $k = 0; for ($i = 0; $i < $nblocks; $i++) { $k = $h1; $h1 = $h1 ^ (ord($data[$i*4+3]) << 24 | ord($data[$i*4+2]) << 16 | ord($data[$i*4+1]) << 8 | ord($data[$i*4])); $h1 = math_imul($h1, $c1); $h1 = ((($h1 << $r1) | ($h1 >> (32 - $r1))) ^ $m) & 0xffffffff; $k = mul($k, $c2); $k = ((($k << $r2) | ($k >> (32 - $r2))) ^ $m) & 0xffffffff; $h1 = ($h1 ^ $k) & 0xffffffff; } $tail = strlen($data) & 3; switch ($tail) { case 3: $h1 ^= ord($data[($nblocks << 2) + 2]) << 16; case 2: $h1 ^= ord($data[($nblocks << 2) + 1]) << 8; case 1: $h1 ^= ord($data[($nblocks << 2)]) & 0xff; $h1 = mul($h1, $c1); $h1 = ((($h1 << $r1) | ($h1 >> (32 - $r1))) ^ $m) & 0xffffffff; } return substr(base_convert($h1, 10, 16), 0, 8); }</code>
Fungsi ini mengambil rentetan input dan menjana cincang perenambelasan 8 aksara. Cincang yang terhasil boleh digunakan sebagai pengecam URL pendek bersama-sama dengan pangkalan data yang sesuai.
Atas ialah kandungan terperinci Bolehkah PHP Hashing Menjana URL Padat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!