提问人:youwhatmate 提问时间:10/11/2021 最后编辑:youwhatmate 更新时间:10/12/2021 访问量:90
PHP 将循环中的字符串与 similar_text 进行比较,但仅在匹配是唯一时才显示
PHP compare strings in loop with similar_text, but only show if match is unique
问:
我有一个带有电影标题的数组。我想将这些电影标题与数据库中的电影进行匹配。此外,我还与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% 匹配。
答: 暂无答案
评论
if ( $preg === 0) {
$sim
$perc