Rumah > Artikel > pembangunan bahagian belakang > PHP levenshtein()
Levenshtein() ialah fungsi terbina dalam PHP yang digunakan untuk menentukan unit jarak yang dipanggil jarak Levenshtein berbanding dengan dua rentetan. Takrif jarak Levenshtein bermaksud jumlah bilangan aksara yang akan diubah suai seperti menggantikan, memasukkan atau memadam rentetan input untuk mengubahnya menjadi rentetan lain.
IKLAN Kursus Popular dalam kategori ini PEMBANGUN PHP - Pengkhususan | 8 Siri Kursus | 3 Ujian Olok-olokMulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Terdapat pemberat yang sama diberikan kepada semua 3 pengubahsuaian di atas (ganti, padam, sisip) secara lalai dalam PHP. Tetapi terdapat pilihan untuk kami memasukkan kos atau wajaran setiap operasi ini dengan memberikan parameter pilihan untuk perkara di atas. Algoritma yang digunakan untuk fungsi ini mempunyai kerumitan O(a*b) di mana a dan b ialah panjang rentetan str1 dan str2 masing-masing.
Terdapat beberapa perkara yang perlu diperhatikan tentang fungsi ini:
Di sini kita membincangkan sintaks dan parameter:
Sintaks:
levenshtein(str1,str2,insert,replace,delete)
Parameter:
Nilai lalai untuk semua 3 parameter terakhir ialah 1.
Nilai Pulangan: Fungsi ini mengeluarkan jarak Levenshtein antara dua rentetan input. Ia mengembalikan nilai -1 jika mana-mana satu daripada jumlah aksara rentetan melintasi 255.
Mari kita ambil beberapa contoh untuk memahami kerja fungsi levenshtein.
Kod:
<?php // PHP code to determine levenshtein distance // between 2 strings $s1 and $s2 $s1 = 'rdo'; $s2 = 'rst'; print_r(levenshtein($s1, $s2)); ?>
Output:
Ini adalah contoh asas di mana 2 rentetan input s1 dan s2 mempunyai satu perkataan setiap satu terdiri daripada 3 huruf berbeza. Kini fungsi levenshtein membandingkan 2 rentetan aksara ini mengikut aksara dan mengetahui perbezaan dalam bilangan aksara. Di sini terdapat 2 huruf yang tidak sama daripada 3. Jadi untuk menjadikan rentetan pertama sama dengan rentetan kedua, kita perlu menambah 2 huruf “s,t” padanya maka keluaran 2.
Kod:
<?php // PHP code to determine levenshtein distance // between 2 strings $s1 and $s2 $s1 = 'first string'; $s2 = 'second string'; print_r(levenshtein($s1, $s2)); ?>
Output:
Dalam contoh asas ini, kita boleh mengetahui jarak levenshtein antara 2 rentetan input yang diwakili oleh s1 dan s2 di sini. Jika kita membandingkan watak dua rentetan, kita dapat melihat bahawa mereka mempunyai satu perkataan yang sama I.e. “rentetan”. Dan dalam perkataan yang selebihnya, ia membandingkan antara perkataan "pertama" dan "kedua" dan juga dengan perkataan biasa "rentetan". Di sini satu-satunya huruf yang tidak sama ialah "f,e,c,o,d" dan tambahan "s". Jadi fungsi levenshtein mengembalikan output sebagai 6 bermakna 6 huruf ini adalah perbezaan antara 2 rentetan input ini dan menggunakan 2 rentetan ini boleh dijadikan sama dari segi aksara.
Kod:
<?php // PHP code to determine levenshtein distance // between $s1 and $s2 $s1 = 'Common Three Words'; $s2 = 'Common Words'; echo("The Levenshtein distance is: "); print_r(levenshtein($s1, $s2)); ?>
Output:
Di sini dalam contoh ini, kita dapat melihat bahawa rentetan pertama mempunyai 3 perkataan manakala rentetan kedua hanya mempunyai 2 perkataan. Dan kita dapat perhatikan bahawa kedua-dua 2 perkataan ini dalam rentetan kedua sudah ada dalam rentetan pertama. Oleh itu satu-satunya perbezaan dalam aksara di sini ialah perkataan "Tiga" yang mengandungi 5 aksara. Satu perkara yang menarik untuk diperhatikan di sini bahawa output memberikan 6 yang bermaksud bahawa ruang tambahan juga dianggap sebagai watak.
<?php // Giving a misspelled word as input $ip = 'giraffee'; // sample set array to compare with $word_list = array('cat','dog','cow','elephant', 'giraffe','eagle','pigeon','parrot','rabbit'); // Since shortest distance is not found yet $short = -1; // Looping through array to find the closest word foreach ($word_list as $word_list) { // Calculating the levenshtein distance between // input word and the current word $levn = levenshtein($ip, $word_list); // To check for the matching word if ($levn == 0) { // This is the closest one which is an perfect match $closest = $word_list; $short = 0; // Here we break from foreach loop // when the exact match is found break; } // When the distance shown here is less than shortest distance // found in next iteration or if the next shortest word is // yet to be found if ($levn <= $short || $short < 0) { // Setting the shortest distance and one having // closest match to the input word $close = $word_list; $short = $levn; } } echo "Input word: $ip\n"; if ($short == 0) { echo "The closest/exact match found to the input word is: $close\n"; } else { echo "Did you mean to spell: $close?\n"; } ?>
Output:
Contoh di atas menunjukkan kepada kita satu daripada kes berbeza di mana fungsi levenshtein ini boleh dilaksanakan. Di sini kami membantu pengguna membetulkan perkataan yang salah eja dengan membandingkannya dengan set tatasusunan yang telah ditetapkan yang mempunyai senarai perkataan yang betul.
Jadi pada mulanya, kami menerima perkataan input daripada pengguna yang biasanya salah ejaan (zirafah). Kami mentakrifkan set tatasusunan nama haiwan yang betul seperti yang ditunjukkan yang juga mempunyai ejaan yang betul untuk perkataan input (zirafah). Gelung foreach digunakan untuk lelaran melalui senarai tatasusunan dan mencari perkataan terdekat yang sepadan dengan input dan ini dilakukan dengan bantuan fungsi levenshtein. Gelung terputus apabila padanan tepat atau yang paling hampir ditemui. Pada penghujungnya, kami membandingkan jarak dengan parameter pendek dan jika jaraknya 0 bermakna padanan tepat ditemui untuk perkataan input yang kemudiannya dicetak dalam output.
Jadi pada asasnya fungsi levenshtein mengembalikan jarak dalam nilai integer yang dikembalikan dengan membandingkan aksara dengan aksara bagi 2 rentetan input yang diberikan kepadanya. Dua parameter pertama ialah rentetan input yang wajib dan 3 parameter terakhir adalah pilihan yang mewakili kos operasi memadam, memasukkan atau menggantikan.
Atas ialah kandungan terperinci PHP levenshtein(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!