2012-04-13 9 views
4

Ich möchte drei Saiten vergleichen:Überprüfen Sie, ob Strings x% gleich

"a text string" //target string 
"a kind of similar text string" 
"the cow jumps over the moon" 

und einen Prozentsatz Parametersatz, der die Ergebnisse liefert, die x% ähnlich dem Ziel.

$results = compare($array,$target,80) 

$results // Returns an array with str 1,2, because they are at least 80 similar to the target. 

Auch ist eine ähnliche Funktion möglich in JavaScript oder jQuery?

+0

+1 - aus demselben Grund wie in meinem Kommentar unten. – Cyclonecode

+0

@KristerAndersson: 'vergleichen' ist keine PHP-Funktion. –

+2

@Rocket - Nein, ich meinte den 'ähnlichen_Text', wurde ein wenig verwirrt, obwohl ich dir meinen Kommentar schrieb. Wie auch immer, die Frage ist gut, also +1. – Cyclonecode

Antwort

5

In PHP gibt es die Funktion similar_text. Was JavaScript betrifft, gibt es die PHP.js project, die PHP-Funktionen in JavaScript neu implementiert. Sie haben eine Implementierung von similar_text, die Sie verwenden können.

Die JavaScript-Implementierung unterstützt anscheinend nicht den prozentualen Parameter.

+0

Ist es in Javascrupt möglich? –

+0

@Derek: Alles ist möglich. Ich habe nicht viel geschaut, aber vielleicht hast du eine Implementierung gefunden. –

3

Die Funktion, die Sie suchen, ist similar_text.

Es wird ein optionaler dritter Parameter (als Referenz übergeben) verwendet, in dem die prozentuale Differenz liegt.

In Ihrer Situation sollte Folgendes tun:

// Returns true if $str1 is at least $pct similar to $str2, otherwise false. 
function compare($str1, $str2, $pct) 
{ 
    $p = 0; 
    similar_text($str1, $str2, $p); 

    return ($p >= $pct); 
} 
+2

+1 - Nie zuvor diese Funktion gesehen, cool. – Cyclonecode

+1

Ich musste es nie benutzen, aber ich musste 'levenshtein()' verwenden. Die beiden sind eng miteinander verwandt. –

+0

Danke für 'levenshtein()', ich muss entscheiden, ob ich das oder das andere verwenden soll. Beide sind ziemlich gut. – Chamilyan

Verwandte Themen