2012-02-29 43 views
0

我有像每行這用PHP替換文本文件中的重複項?

DallasWebJobs 
DallasWebJobs 
DallasWebJobs 
php_gigs 
brotherjudkins 
goldbergwb 
SanDiegoWebJobs 
brinteractive 
muracms 
browan85 
php_gigs 
php_gigs 
php_gigs 
php_gigs 

1名幾千名列表的文本文件,1個文件上可能有多達30,000名,雖然我需要替換所有重複的名字,因爲這可能是由於很多因爲一半是重複的。

我想在PHP中做到這一點,1雖然是將每一行導入到MySQL數據庫,然後這樣做,但這似乎是矯枉過正,我敢肯定有一個更簡單的方法。

請幫助,如果你能


更新我發現這對於電子郵件,它應該工作太

$list = file('./Emailist.txt'); 
$list_unique = array_unique($list); 
foreach ($list_unique as $mail) { 
    echo $mail; 
} 
+2

如何區分大小寫? ** bob **會成爲** Bob **的副本嗎? – Bot 2012-02-29 02:04:40

+3

有一個簡單的方法可以在shell中對'sort yourfile | uniq'。你確定要使用php設施嗎? – zerkms 2012-02-29 02:06:10

+0

@Computer我更新了我的問題上面,我剛剛發現一個用於電子郵件的例子,我認爲它會爲此工作。名字是Twitter的名字,所以我不認爲鮑勃和鮑勃將是一個問題 – CodeDevelopr 2012-02-29 02:07:21

回答

1

php.net:在Gmail的點com 06月SERG點podtynnyi -2009 11:21

//刪除文本文件中的重複項並將結果轉儲到一個文件中,例如:郵件列表,鏈接列表等

<?php 

$data1 = file("data1.txt"); 

file_put_contents('unique.txt', implode('\n', array_unique($data1))); 
?> 

這將刪除所有副本,並將其保存爲unique.txt

文件
<?php 

$data1 = file("data1.txt"); 

$uniqueArray = array_unique($data1)); 
?> 

將其存儲在$uniqueArray

0
$lines = file("test-file"); 

foreach($lines as $line) 
{ 
    $new[str_replace(array("\n","\r"),"",$line)] = 1; 
} 

print_r(array_keys($new)); 
0
$file = file_get_contents($filename); 
$arr = array(); 
$arr = split('\n',$file); 
$arr = array_unique($arr); 

然後將$arr的內容再次寫入文本文件