PHP 将循环中的字符串与 similar_text 进行比较,但仅在匹配是唯一时才显示

PHP compare strings in loop with similar_text, but only show if match is unique

提问人:youwhatmate 提问时间:10/11/2021 最后编辑:youwhatmate 更新时间:10/12/2021 访问量:90

问:

我有一个带有电影标题的数组。我想将这些电影标题与数据库中的电影进行匹配。此外,我还与PHP的similar_text()函数进行了比较。到目前为止,这很好用,但有时一部电影标题有多个 100% 匹配。在这种情况下,我想排除这种比较,因为我稍后会手动进行匹配。我只想与火柴合作,我可以确定这是正确的。

为了显示 100% 和超过 80% 的匹配,我使用开关/外壳。因此,为了忽略具有多个匹配项的那些,我尝试使用正则表达式找到它们,然后执行 if 语句。但我的方法行不通。它仍然显示多个 100% 匹配项。

这是我到目前为止的方法:

$movies = array( // full of movie titles );
foreach ( $movies as $movie ) {
            $sim = similar_text($movie->title, $db_title, $perc);
            switch($perc) {
                case $perc == '100 %':
                    $preg = preg_match('|^(?=[^%s].*?[%s][^%s]*$)[0-9a-zA-Z_-\s:;,\.\?!\(\)\p{L}(%s){1}]*$|u', $perc);
                    if ( $preg === 0) {
                        echo "$movie->title: $perc %\n";
                        break;
                    } else {
                        echo "no usable match!\n";
                        break;
                    }
                case $perc >= '80 %':
                    echo "$movie->title: $perc %\n";
                    break;
                case $perc <= '80 %':
                    break;
            }
            
        }

谷歌并没有真正帮助我。你会发现许多关于similar_text本身的问题,但不知道如何处理多个字符串 100% 匹配的情况。

有人有想法吗?

非常感谢!

编辑(用例澄清):我有一个大数组,其中包含许多电影名称(以及与电影相关的其他一些内容)。我还有一个数据库,里面有很多电影。因为我没有唯一标识符来匹配数组中的电影和数据库中的电影,所以我想用similar_text匹配标题。但有时一部电影标题存在 3 次,并且完全 100% 匹配。我想找到这些案例,这样我以后就可以处理这些案例,并且只使用唯一的 100% 匹配。

php 字符串 匹配 preg-match 匹配

评论

0赞 The fourth bird 10/11/2021
不确定您要做什么,但如果这部分是真的,那么就没有匹配项。这是故意的吗?if ( $preg === 0) {
0赞 youwhatmate 10/12/2021
好吧,让我解释一下:我有一个很大的数组,里面有许多电影名称(以及其他一些与电影相关的东西)。我还有一个数据库,里面有很多电影。因为我没有唯一标识符来匹配数组中的电影和数据库中的电影,所以我想用similar_text匹配标题。但有时一部电影标题存在 3 次,并且完全 100% 匹配。我想找到这些案例,这样我以后就可以处理这些案例,并且只使用唯一的 100% 匹配。
0赞 The fourth bird 10/12/2021
因此,您事先不知道哪些是完全重复的,只有在处理完所有数据后才能知道,对吗?然后,您应该跟踪匹配项和重复项。正则表达式与模式匹配,该模式允许多个唯一字符串。
0赞 youwhatmate 10/12/2021
好的,我明白了,所以我必须在正则表达式上工作?我对正则表达式不是很熟悉。你有帮助我的例子或好的资源吗?
0赞 The fourth bird 10/12/2021
例如 rexegg.comregular-expressions.info,SO上有很多例子。但是在你的代码中,你得到的是一个未使用的值。然后,打开代码示例中似乎没有的变量。为什么需要正则表达式?$sim$perc

答: 暂无答案