我有一个文本文件,我正试图删除重复的行。
文本文件示例:
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/