2012-04-13 61 views
4

我想比较三个字符串:检查字符串为x%等于

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

,并设置返回的结果的百分比参数x%相似的目标。

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

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

此外,是一个类似的功能可能在JavaScript或jQuery?

+0

+1 - 同样的理由,在我下面的评论。 – Cyclonecode 2012-04-13 21:25:34

+0

@KristerAndersson:'compare'实际上并不是一个PHP函数。 – 2012-04-13 21:26:12

+2

@火箭 - 不,我的意思是'similar_text',变得有点困惑,尽管我正在给你写评论。无论如何,这个问题很好,所以+1。 – Cyclonecode 2012-04-13 21:29:06

回答

5

在PHP中,有功能similar_text。至于JavaScript,还有PHP.js project,它在JavaScript中重新实现了PHP函数。他们有一个可以使用的实现similar_text

JavaScript实现似乎不支持百分比参数。

+0

Javascirpt有可能吗? – 2012-04-13 21:53:01

+0

@Derek:任何可能的事情。我没有看太多,但你也许能够找到一个实现。 – 2012-04-13 23:02:43

3

您正在寻找的功能是similar_text

它采用可选的第三个参数(通过引用传递),其中放置了百分比差异。

在您的情况,下面应该做的:

// 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 - 以前从未见过这个功能,很酷。 – Cyclonecode 2012-04-13 21:24:53

+1

我从来没有使用它,但我不得不使用'levenshtein()'。这两者恰好是密切相关的。 – 2012-04-13 21:27:24

+0

感谢'levenshtein()',我需要决定是否使用那个或另一个。两者都很好。 – Chamilyan 2012-04-14 08:18:07