similar_text
(PHP 4, PHP 5, PHP 7, PHP 8)
similar_text — Berechnet die Ähnlichkeit zweier Zeichenketten
Beschreibung
$string1
, string $string2
, float &$percent
= null
): intDie Berechnung der Ähnlichkeit zweier Strings erfolgt nach der in Programming Classics: Implementing the World's Best Algorithms by Oliver (ISBN 0-131-00413-1) beschriebenen Methode. Beachten Sie, dass diese Implementierung keinen Stack verwendet wie in Olivers Pseude-Code, dafür aber rekursive Aufrufe, die die Performance erhöhen können (aber nicht müssen). Beachten Sie auch, dass die Komplexität dieses Algorithmus O(N**3) beträgt, wobei N die Länge der längsten Zeichenkette ist.
Parameter-Liste
-
string1
-
Die erste Zeichenkette.
-
string2
-
Die zweite Zeichenkette.
Hinweis:
Das Vertauschen der Parameter
first
undsecond
kann ein anderes Ergebnis zur Folge haben; siehe das Beispiel weiter unten. -
percent
-
Falls Sie als Referenz ein drittes Argument angeben, wird similar_text() die Ähnlichkeit als Prozentwert errechnen. Dazu wird das Ergebnis von similar_text() durch den Durchschnitt der Längen der angegebenen Zeichenketten dividiert und mit
100
multipliziert.
Rückgabewerte
Gibt die Anzahl übereinstimmender Zeichen in beiden Zeichenketten zurück.
Die Anzahl übereinstimmender Zeichen wird berechnet, indem die längste erste gemeinsame Teilzeichenkette gesucht wird und dies dann rekursiv für die Prä- und Suffixe wiederholt wird. Die Längen aller gefundenen gemeinsamen Teilzeichenketten werden aufsummiert.
Beispiele
Beispiel #1 Beispiel für die Vertauschung der Argumente von similar_text()
Dieses Beispiel verdeutlicht, dass das Vertauschen des
first
und second
Arguments ein
anderes Ergebnis zur Folge haben kann.
<?php
$sim = similar_text('bafoobar', 'barfoo', $perc);
echo "Ähnlichkeit: $sim ($perc %)\n";
$sim = similar_text('barfoo', 'bafoobar', $perc);
echo "Ähnlichkeit: $sim ($perc %)\n";
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Ähnlichkeit: 5 (71.428571428571 %) Ähnlichkeit: 3 (42.857142857143 %)
Siehe auch
- levenshtein() - Berechnet die Levenshtein-Distanz zwischen zwei Strings
- soundex() - Berechnet die Laut-Ähnlichkeit eines Strings