从包含不同句子但由 PHP 上的相同单词组成的 txt 文件中删除重复项

Remove duplicate from txt file that contains different sentences but consist of the same words on PHP

我想从 txt 文件中删除重复项。现在,我用它来删除重复项:

$lines = file('input.txt');
$lines = array_unique($lines);
file_put_contents('output.txt', implode($lines));

问题在于,代码仅针对 beef bbq recipebeef bbq recipe 这样的情况删除重复项。在我的例子中,如果 txt 文件包含像这样的关键字:

beef bbq recipe
beef easy recipe
beef steak recipe
bbq recipe beef
beef bbq recipe
recipe bbq beef

将 return 与此结果:

beef bbq recipe
beef easy recipe
beef steak recipe
bbq recipe beef
recipe bbq beef

相反,我希望结果如下所示:

beef bbq recipe
beef easy recipe
beef steak recipe

所以,我希望像 beef bbq recipebbq recipe beefrecipe bbq beef 这样的案例也被视为重复。有解决办法吗?谢谢

在删除重复项之前,您可以使用 array_map, explode and sort 将所有行的关键字置于相同的顺序:

$lines = file('input.txt');

// sort keywords in each line
$lines = array_map(function($line) {
    $keywords = explode(" ", trim($line));
    sort($keywords);
    return implode(" ", $keywords);
}, $lines);

$lines = array_unique($lines);
file_put_contents('output.txt', implode("\n", $lines));

这将迭代您的数组并按字母顺序对每一行的关键字进行排序。之后,您可以使用 array_unique.

删除重复的行