首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从包含不同句子但在PHP上包含相同单词的txt文件中删除重复

从包含不同句子但在PHP上包含相同单词的txt文件中删除重复
EN

Stack Overflow用户
提问于 2022-04-02 14:10:42
回答 1查看 190关注 0票数 0

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

代码语言:javascript
复制
$lines = file('input.txt');
$lines = array_unique($lines);
file_put_contents('output.txt', implode($lines));

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

代码语言:javascript
复制
beef bbq recipe
beef easy recipe
beef steak recipe
bbq recipe beef
beef bbq recipe
recipe bbq beef

将带着以下结果返回:

代码语言:javascript
复制
beef bbq recipe
beef easy recipe
beef steak recipe
bbq recipe beef
recipe bbq beef

相反,我希望结果看起来如下:

代码语言:javascript
复制
beef bbq recipe
beef easy recipe
beef steak recipe

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-02 14:26:08

在删除重复项之前,可以使用array_mapexplodesort将所有行的关键字按相同的顺序排列:

代码语言:javascript
复制
$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删除重复的行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71718260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档