PHP - similar_text()函数返回不准确的结果?

时间:2010-11-05 14:49:04

标签: php function text

我正在研究searchengine,并过滤掉所有不良结果,我将结果字符串与搜索查询进行比较,如果结果超过30%,则会返回。

我知道这很有效,我以前做过,而且很棒。然而,由于一些奇怪的原因,它似乎现在为我返回一些非常奇怪的结果。我一直在玩它已经有一段时间了,我无法理解它!

while ($stmt->fetch()) {
 $tmp_procent = similar_text("banana", "banana");
 //if ($tmp_procent > 30) {
  $result[] = array('id' => $id,
        'category_id' => $category_id,
        'example' => html($example),
        'example_name' => html($example_name));
 //}
 $procent_arr[] = $tmp_procent;
}
return $procent_arr;

正如您所看到的,我已经将IF语句注释掉了,所以现在它会返回所有结果。但这不是重点...正如你所看到的,我正在比较两个完全相同的字符串(香蕉),然后返回它们。

这是打印出结果后得到的结果:

Array
(
    [0] => 5
    [1] => 5
    [2] => 5
)
呃,什么?那不对!所有结果都不应该是100吗?

任何想法的人?

谢谢!

哦,我用瑞典语拼写“procent”,所以它没有拼写错误,万一你注意到了。它返回3个结果的原因是因为它在数据库中找到了三个匹配项。

1 个答案:

答案 0 :(得分:0)

很难理解你想要做什么。

我想知道为什么它返回 5。'banana' 有 6 个字符。我觉得你打错字了?

参考php documentation,语法类似_text($str1, $str2, &$perc) 添加最后一个参数不会影响返回值。 'banana' 的返回值为 6。 $perc 是什么,它是对函数核心中公式结果的引用

(similar_characters/average of characters*100)

这就是在您的情况下值为 100 的值。

$procent_arr = []; // Good practice to define your array out of the loop
while ($stmt->fetch()) {
    $tmp_procent = similar_text('banana', 'banana', $procent);
    if ($tmp_procent > 30) {
        $result[] = [
            'id' => $id,
            'category_id' => $category_id,
            'example' => html($example),
            'example_name' => html($example_name)
        ];
    }
    $procent_arr [] = $procent;
}
return $procent_arr;

返回值为:

[0]=>100
[1]=>100
[2]=>100