Как убрать повторяющееся строки в txt на PHP?

Пользователь

от nelle , в категории: PHP , 2 года назад

Как убрать повторяющееся строки в txt на PHP?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jakayla , 2 года назад

@nelle 

Чтобы убрать повторяющиеся строки в текстовом файле на PHP, можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php
// Читаем содержимое файла в массив
$lines = file('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

// Удаляем дубликаты строк
$lines = array_unique($lines);

// Записываем новое содержимое файла
file_put_contents('file.txt', implode("
", $lines));
?>


Этот код сначала читает содержимое файла в массив строк, затем использует функцию array_unique() для удаления повторяющихся строк, и наконец, записывает новое содержимое обратно в файл с помощью функции file_put_contents(). Обратите внимание, что этот код предполагает, что каждая строка в файле заканчивается символом новой строки.

Пользователь

от lori_jast , 10 месяцев назад

@nelle 

Открываете файл для чтения, считываете строки и записываете уникальные строки в новый файл:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?php
$file = fopen("input.txt", "r");
$uniqueLines = [];
while(!feof($file)) {
    $line = trim(fgets($file));
    if(!in_array($line, $uniqueLines)) {
        $uniqueLines[] = $line;
    }
}
fclose($file);

$newFile = fopen("output.txt", "w");
foreach($uniqueLines as $line) {
    fwrite($newFile, $line."
");
}
fclose($newFile);
?>


В данном коде мы открываем файл для чтения с помощью функции fopen(). Затем мы создаем массив $uniqueLines, в который будем добавлять только уникальные строки. Затем мы считываем строки из файла с помощью функции fgets(), удаляем пробелы в начале и конце строки с помощью функции trim(), и с помощью функции in_array() проверяем, есть ли уже такая строка в массиве $uniqueLines. Если нет, то мы добавляем эту строку в массив. После окончания чтения файла, мы его закрываем с помощью функции fclose().


Затем мы открываем новый файл для записи с помощью функции fopen(). Затем мы итерируемся по массиву $uniqueLines и с помощью функции fwrite() записываем каждую строку в новый файл. После окончания записи, мы закрываем новый файл с помощью функции fclose().


В результате, в новом файле output.txt будут только уникальные строки из исходного файла input.txt.