Alicia Collins
Alicia Collins

Reputation: 33

deleting matches from text file in php

Consider a txt file of a list of items

qqqqqq

eeeeee

dddddd

hhhhhh

dddddd

hhhhhh

999999

And some of the items in the list are duplicates. how do I output a using php a text file where anything that is duplicated is removed.

the result:

qqqqqq

eeeeee

999999

Upvotes: 2

Views: 97

Answers (2)

Norton
Norton

Reputation: 340

<?php

$file = file_get_contents('file.txt'); //get file to string
$row_array = explode("\n",$file); //cut string to rows by new line
$row_array = array_count_values(array_filter($row_array));

foreach ($row_array as $key=>$counts) {
    if ($counts==1)
        $no_duplicates[] = $key; 
}

//do what You want
echo '<pre>';
print_r($no_duplicates);

file_put_contents('no_duplicates.txt',$no_duplicates); //write to file. If file don't exist. Create it.

Upvotes: 1

Seder
Seder

Reputation: 2763

You can use array_unique

and then right the content back

$file = fopen("filename.txt", "r");
$members = array();

while (!feof($file)) {
   $members[] = fgets($file);
}

fclose($file);
$unique_members = array(); 
$unique_members = array_unique($members);
var_dump($unique_members);
//write the content back to the file

The above solution was for removing the duplicates only and make them unique. Thanks to nhahtdh for pointing it out.

$count_members = array_count_values($members); 
foreach($count_members as $key=>$value)
{
   if($value == 1) 
       //write it to the file 
}

So you will not need the array_unique stuff Sorry again

Upvotes: 4

Related Questions