(PHP 4, PHP 5, PHP 7)
similar_text — Berechnet die Ähnlichkeit zweier Zeichenketten
$first
, string $second
[, float &$percent
] ) : 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.
first
Die erste Zeichenkette.
second
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.
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.
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 %)