Heim  >  Artikel  >  Backend-Entwicklung  >  PHP levenshtein()

PHP levenshtein()

王林
王林Original
2024-08-29 12:54:33985Durchsuche

levenshtein() ist eine in PHP integrierte Funktion, die verwendet wird, um eine Abstandseinheit namens Levenshtein-Abstand im Vergleich zu zwei Zeichenfolgen zu bestimmen. Die Definition des Levenshtein-Abstands steht für die Gesamtzahl der Zeichen, die geändert werden müssen, z. B. durch Ersetzen, Einfügen oder Löschen der Eingabezeichenfolge, um sie in eine andere Zeichenfolge umzuwandeln.

WERBUNG Beliebter Kurs in dieser Kategorie PHP-ENTWICKLER - Spezialisierung | 8-Kurs-Reihe | 3 Probetests

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Alle oben genannten drei Änderungen (Ersetzen, Löschen, Einfügen) werden in PHP standardmäßig gleich gewichtet. Es besteht jedoch die Möglichkeit, die Kosten oder die Gewichtung jeder dieser Operationen einzugeben, indem wir die optionalen Parameter für die oben genannten angeben. Der für diese Funktion verwendete Algorithmus hat eine Komplexität von O(a*b), wobei a und b die Länge der Zeichenfolgen str1 bzw. str2 sind.

Bei dieser Funktion gibt es jedoch ein paar Dinge zu beachten:

  • Bei dieser levenshtein()-Funktion wird die Groß-/Kleinschreibung nicht beachtet.
  • Es gibt eine ähnliche Funktion wie Levenshtein, die Funktion „like_text()“ heißt. Im Vergleich dazu ist die Funktion levenshtein() etwas schneller, aber die Funktion simiar_text() liefert genauere Ergebnisse mit einer begrenzten Anzahl erforderlicher Änderungen. Außerdem ist levenshtein() teurer.

Syntax und Parameter

Hier besprechen wir die Syntax und Parameter:

Syntax:

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

Parameter:

  • str1: Obligatorischer Eingabeparameter erforderlich und die erste Zeichenfolge, mit der verglichen wird.
  • str2: Dies ist die zweite Zeichenfolge, mit der verglichen wird, und außerdem ein obligatorischer Parameter.
  • insert: Ein optionaler Parameter und stellt den Preis dar, zu dem ein Zeichen eingefügt wird.
  • Ersetzen: Auch ein optionaler Wert, der die Kosten angibt, zu denen ein Zeichen ersetzt wird.
  • löschen: Ein weiterer optionaler Parameter, der den Preis angibt, zu dem ein Zeichen gelöscht wird.

Der Standardwert für alle letzten 3 Parameter ist 1.

Rückgabewert: Diese Funktion gibt den Levenshtein-Abstand zwischen den beiden Eingabezeichenfolgen aus. Es gibt den Wert -1 zurück, wenn auch nur eines der gesamten Zeichen der Zeichenfolge 255 überschreitet.

Beispiele für PHP levenshtein()

Nehmen wir ein paar Beispiele, um die Funktionsweise der Levenshtein-Funktion zu verstehen.

Beispiel #1

Code:

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

Ausgabe:

PHP levenshtein()

Dies ist ein einfaches Beispiel, bei dem die beiden Eingabezeichenfolgen s1 und s2 ein Wort enthalten, das jeweils aus drei verschiedenen Buchstaben besteht. Nun vergleicht die Levenshtein-Funktion diese beiden Zeichenfolgen Zeichen für Zeichen und ermittelt den Unterschied in der Anzahl der Zeichen. Hier gibt es zwei der drei Buchstaben, die nicht gemeinsam sind. Um also die erste Zeichenfolge mit der zweiten Zeichenfolge identisch zu machen, müssen wir die beiden Buchstaben „s,t“ hinzufügen, daher die Ausgabe 2.

Beispiel #2

Code:

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

Ausgabe:

PHP levenshtein()

In diesem einfachen Beispiel können wir den Levenshtein-Abstand zwischen den beiden Eingabezeichenfolgen ermitteln, die hier durch s1 und s2 dargestellt werden. Wenn wir die Zeichen der beiden Zeichenfolgen vergleichen, können wir sehen, dass sie ein gemeinsames Wort haben, d. h. „Zeichenfolge“. Und in den übrigen Wörtern wird zwischen „ersten“ und „zweiten“ Wörtern und auch mit dem gebräuchlichen Wort „string“ verglichen. Hier sind die einzigen Buchstaben, die nicht gemeinsam sind, „f,e,c,o,d“ und das zusätzliche „s“. Die Levenshtein-Funktion gibt die Ausgabe also als 6 zurück, was bedeutet, dass diese 6 Buchstaben die Differenz zwischen diesen beiden Eingabezeichenfolgen darstellen und mit deren Hilfe diese beiden Zeichenfolgen hinsichtlich der Zeichen gleich gemacht werden können.

Beispiel #3

Code:

<?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));
?>

Ausgabe:

PHP levenshtein()

Hier in diesem Beispiel können wir sehen, dass die erste Zeichenfolge 3 Wörter enthält, während die zweite Zeichenfolge nur 2 Wörter enthält. Und wir können feststellen, dass diese beiden Wörter in der zweiten Zeichenfolge bereits in der ersten Zeichenfolge vorhanden sind. Daher ist der einzige Unterschied in den Zeichen hier das Wort „Drei“, das aus 5 Zeichen besteht. Interessant ist hier, dass die Ausgabe 6 ergibt, was bedeutet, dass auch das zusätzliche Leerzeichen als Zeichen betrachtet wird.

Beispiel #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";
}
?>

Ausgabe:

PHP levenshtein()

Das obige Beispiel zeigt uns einen der verschiedenen Fälle, in denen diese Levenshtein-Funktion implementiert werden kann. Hier helfen wir dem Benutzer, ein falsch geschriebenes Wort zu korrigieren, indem wir es mit einem vordefinierten Satz eines Arrays vergleichen, das die Liste der richtigen Wörter enthält.

Also akzeptieren wir zunächst ein Eingabewort des Benutzers, das normalerweise falsch geschrieben ist (Giraffe). Wir definieren wie gezeigt einen Array-Satz korrekter Tiernamen, der auch die korrekte Schreibweise für das Eingabewort (Giraffe) aufweist. Eine foreach-Schleife wird verwendet, um die Array-Liste zu durchlaufen und das nächste Wort zu finden, das mit der Eingabe übereinstimmt. Dies geschieht mit Hilfe der Levenshtein-Funktion. Die Schleife wird unterbrochen, wenn eine exakte oder die nächstgelegene Übereinstimmung gefunden wird. Am Ende vergleichen wir den Abstand mit dem kurzen Parameter und wenn der Abstand 0 ist, bedeutet dies, dass eine genaue Übereinstimmung für das Eingabewort gefunden wurde, die dann in der Ausgabe gedruckt wird.

Fazit

Im Grunde gibt die Levenshtein-Funktion also den Abstand in ganzzahligen Werten zurück, die durch den zeichenweisen Vergleich der beiden ihr übergebenen Eingabezeichenfolgen zurückgegeben werden. Die ersten beiden Parameter sind die Eingabezeichenfolgen, die obligatorisch sind, und die letzten drei Parameter sind optional und stellen die Kosten für Lösch-, Einfüge- oder Ersetzungsvorgänge dar.

Das obige ist der detaillierte Inhalt vonPHP levenshtein(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP parse_str()Nächster Artikel:PHP parse_str()