从包含不同句子但由 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 recipe
和 beef 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 recipe
、bbq recipe beef
和 recipe 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
.
删除重复的行
我想从 txt 文件中删除重复项。现在,我用它来删除重复项:
$lines = file('input.txt');
$lines = array_unique($lines);
file_put_contents('output.txt', implode($lines));
问题在于,代码仅针对 beef bbq recipe
和 beef 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 recipe
、bbq recipe beef
和 recipe 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
.