php similar_text()给出了更改字符串

时间:2017-04-24 12:57:48

标签: php

我正在使用similar_text()函数来计算两个字符串之间的相似性。

$s1 = 'God is great'; 
$s2 = 'I too'; 

similar_text($s1, $s2, $result); 

echo $result; 

它给出输出11.764705882353  但是当我交换字符串的位置时,它会给出不同的输出:

$s1 = 'God is great'; 
$s2 = 'I too'; 

similar_text($s2, $s1, $result); 

echo $result; 

它给出输出23.529411764706 为什么会这样?

3 个答案:

答案 0 :(得分:1)

该功能根据参数顺序使用不同的逻辑。请查看此问题How does similar_text work?

此错误报告无应答https://bugs.php.net/bug.php?id=62648

答案 1 :(得分:0)

算法获取第二个字符串包含的第一个字符串中的第一个字母,对其进行计数,然后从第二个字符串中删除之前的字符。这就是为什么它会错过中间的字符,而这就是改变字符顺序时导致差异的原因。

答案 2 :(得分:0)

我不完全确定为什么similar_text() produces different results,同时,你可以使用levenshtein(),这将产生连贯的结果并做你需要的,即:

echo levenshtein ($s2, $s1);
# 11
echo levenshtein ($s1, $s2);
# 11