levenshtein

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

levenshteinİki dizge arasındaki Levenştayn mesafesini hesaplar

Açıklama

levenshtein(
    string$dizge1,
    string$dizge2,
    int$yerleştirme_bedeli = 1,
    int$değiştirme_bedeli = 1,
    int$silme_bedeli = 1
): int

Levenştayn mesafesi, dizge1 dizgesini dizge2'ye dönüştürmek için silinecek, yerleştirilecek veya değiştirilecek karakterlerin asgarisini tanımlar. Algoritmanın hesaplama karmaşıklığı, n ve m, dizge1 ve dizge2'nin uzunluğu olmak üzere O(m*n)'dir (Hesaplama karmaşıklığı O(max(n,m)**3) olan similar_text() işlevine göre daha iyi olsa da hala pahalıdır).

yerleştirme_bedeli, değiştirme_bedeli ve/veya silme_bedeli için 1 atanmışsa, algoritma en ucuz dönüşümü seçmeye uyarlanır. Örneğin, $yerleştirme_bedeli + $silme_bedeli < değiştirme_bedeli ise, hiçbir değiştirme yapılmaz, ama yerleştirme ve silme yapılır.

Bağımsız Değişkenler

dizge1

Levenştayn mesafesi değerlendirilecek dizgelerden biri.

dizge2

Levenştayn mesafesi değerlendirilecek dizgelerden biri.

yerleştirme_bedeli

Yerleştirme maliyetini tanımlar.

değiştirme_bedeli

Değiştirme maliyetini tanımlar.

silme_bedeli

Silme maliyetini tanımlar.

Dönen Değerler

Belirtilen iki dizge arasındaki Levenştayn mesafesi döner.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0 Bu sürümden önce, levenshtein() iki ya da beş bağımsız değişken ile çağrılabiliyordu.
8.0.0 Bu sürümden önce, dizgelerden biri 255 karakterden uzunsa levenshtein()-1 döndürürdü.

Örnekler

Örnek 1 - levenshtein() örneği

<?php
// girdi yanlış yazılmış olsun
$input = 'carrrot';

// bir sözcük dizisiyle karşılaştır
$words = array('apple','pineapple','banana','orange',
'radish','carrot','pea','bean','potato');

// en kısa mesafenin bulunamaması durumu
$shortest = -1;

// En kısa mesafeyi bulmak için döngü
foreach ($words as $word) {

// girdi ile sözcük arasındaki mesafeyi hesapla
$lev = levenshtein($input, $word);

// Bir eşleşme var mı bakalım
if ($lev == 0) {

// en yakın sözcük bu olacak (tam eşleşme)
$closest = $word;
$shortest = 0;

// Tam eşleşme varsa döngüden çık
break;
}

// Eğer bu mesafe bir öncekinden kısaysa

Yukarıdaki örneğin çıktısı:

Girdi: carrrot Doğrusu bu olabilir mi?: carrot

Ayrıca Bakınız

To Top