php - 删除文本文件中的重复行

标签 php arrays file

我有一个文本文件,我正试图删除重复的行。

文本文件示例:

new featuredProduct('', '21640'), 
new featuredProduct('', '24664'), 
new featuredProduct('', '22142'), 
new featuredProduct('', '22142'), 
new featuredProduct('', '22142'), 
new featuredProduct('', '22142'), 
new featuredProduct('', '22142'), 

我试过的 PHP 代码:

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

PHP 文件名为 duplicates.php,文本文件位于同一目录中。我只想留下:

new featuredProduct('', '21640'), 
new featuredProduct('', '24664'), 
new featuredProduct('', '22142'),  

文件函数尝试将文件读入 $lines 数组,然后使用 array_unique() 删除重复的条目。然后将过滤后的结果放回同一个文件中。

最佳答案

问题是每行末尾的换行符。因为最后一行的末尾没有换行符,所以它不会与其他行相同。

所以当你读取文件时删除它们,然后当你再次保存文件时添加:

$lines = file('test.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$lines = array_unique($lines);
file_put_contents('test.txt', implode(PHP_EOL, $lines));

如果你这样做:var_dump($lines);file() 调用之后你会看到它:

array(7) {
  [0]=>
  string(36) "new featuredProduct('', '21640'), 
"
  [1]=>
  string(36) "new featuredProduct('', '24664'), 
"
  [2]=>
  string(36) "new featuredProduct('', '22142'), 
"
  [3]=>
  string(36) "new featuredProduct('', '22142'), 
"
  [4]=>
  string(36) "new featuredProduct('', '22142'), 
"
  [5]=>
  string(36) "new featuredProduct('', '22142'), 
"
  [6]=>
  string(34) "new featuredProduct('', '22142'), "
       //^^ See here                            ^ And here
}

关于php - 删除文本文件中的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30397631/

相关文章:

C: 如何获取Windows目录下的文件列表?

php - 使用 CakePHP 更新数组中的字段

php - 在 Eloquent Laravel 中为 Between 编写原始查询

php - 如何在日期和月份不带前导零的情况下验证日期?

大小为 0 但有数据的 Linux 文件

c - fscanf 从文本文件读取二维 double 组时出现问题

php - 有没有办法将 UMA 头像配方**包括其转义字符**保存到我的数据库?

javascript - 将推送的元素拆分为 Javascript 空数组

arrays - Swift 4 认为数组在不为空时为空

javascript - 将 javascript 对象与具有相同键的内部数组结合起来(类似于外键)