How to remove duplicate rows from txt using php?

2

Well I'm creating a div that updates every x seconds and I'm displaying the currently logged in users, however my code is inserting each update the same record. Is there any way to exclude repeated lines?

Here is the code I'm currently using:

<?php
$id_usuario = $_SESSION['user_id'];
$usuario = $_SESSION['user_name'];

//grava os dados no arquivo
$arquivo = fopen("usuariosonline.txt", "a");
fwrite($arquivo, "<p><img src='avatar/".$id_usuario.".jpg'/>".$usuario."</p>\n");
fclose($arquivo);

// pronto aki terminou de adicionar

$file_name = "usuariosonline.txt";

// transforma as linhas do arquivo em arrays
$lines = file($file_name);
// verifica se a linha não é um comentário (apenas se você queira adicionar comentários no file.txt)
foreach($lines as $key => $value){
    if(substr_count($lines, "#") == 0){
        $texts[] = trim($value);
    }
}

// retira as linhas duplicadas (se não for utilizar os comentário no file.txt, utilize a variável $lines)
array_unique($lines);

//abre o arquivo e o reescreve (se você não quer modificar o arquivo só ignora os códigos abaixo)
$file = fopen($file_name, "w");
fwrite($file, implode("\n", $texts));
fclose($file);

include('usuariosonline.txt');
?>

Warning still appeared:

  Warning: substr_count () expects parameter 1 to be string, array given in line 19

    
asked by anonymous 10.02.2016 / 00:13

1 answer

1

Searching for this post forum

And it really is very simplified the way, summarizing

// ler no formato de array
$list = file('file.txt');

// array unique remove as arrays(linhas) duplicadas
 $list = array_unique($list);

//  escreve de volta no arquivo
file_put_contents('uniques.txt', implode('', $list));

My complete code stayed like this

            <?php
    $id_usuario = $_SESSION['user_id'];
    $usuario = $_SESSION['user_name'];

        //grava os dados no arquivo
        $arquivo = fopen("usuariosonline.txt", "a");

        if (flock($fp, LOCK_EX)) { // faca um lock exclusivo
        fwrite($arquivo, "<p><img src='avatar/".$id_usuario.".jpg'/>".$usuario."</p>\n");
        flock($fp, LOCK_UN); // libera o lock
        } else {
        echo "Não pude travar o arquivo !";
    }

        fclose($arquivo);


    $list = file('usuariosonline.txt');


    $list = array_unique($list);


    file_put_contents('usuariosonline.txt', implode('', $list));

        include('usuariosonline.txt');
    ?>
    
10.02.2016 / 03:57