Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP levenshtein()

PHP levenshtein()

王林
王林asal
2024-08-29 12:54:33985semak imbas

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-olok

Mulakan 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:

  • Fungsi levenshtein() ini tidak peka huruf besar-kecil.
  • Terdapat fungsi serupa dengan levenshtein yang dipanggil fungsi similar_text(). Berbanding dengan itu, fungsi levenshtein() ialah fungsi yang lebih pantas tetapi simiar_text() mengembalikan hasil yang lebih tepat dengan bilangan perubahan terhad yang diperlukan. Selain itu, levenshtein() lebih mahal.

Sintaks dan Parameter

Di sini kita membincangkan sintaks dan parameter:

Sintaks:

levenshtein(str1,str2,insert,replace,delete)

Parameter:

  • str1: Parameter input mandatori diperlukan dan merupakan rentetan pertama untuk dibandingkan.
  • str2: Ini adalah rentetan kedua untuk dibandingkan dan juga merupakan parameter wajib.
  • masukkan: Parameter pilihan dan mewakili kos di mana aksara akan dimasukkan.
  • ganti: Juga pilihan yang mewakili kos untuk menggantikan watak.
  • padam: Parameter pilihan lain yang mewakili kos sesuatu aksara akan dipadamkan.

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.

Contoh PHP levenshtein()

Mari kita ambil beberapa contoh untuk memahami kerja fungsi levenshtein.

Contoh #1

Kod:

<?php
// PHP code to determine levenshtein distance
// between 2 strings $s1 and $s2
$s1 = 'rdo';
$s2 = 'rst';
print_r(levenshtein($s1, $s2));
?>

Output:

PHP levenshtein()

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.

Contoh #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:

PHP levenshtein()

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.

Contoh #3

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:

PHP levenshtein()

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.

Contoh #4

<?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:

PHP levenshtein()

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.

Kesimpulan

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!

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
Artikel sebelumnya:PHP parse_str()Artikel seterusnya:PHP parse_str()