2016-08-14 6 views
0

私は50000個の電子メールIDが保存されているテキストファイルを持っています。このファイルからデータをフィルタリングするには、登録解除のEメールIDを削除する必要があります。ファイル内のファイルから別のレコード数を削除する

私はこのコードを試してみましたが、運

<?php 
ini_set("memory_limit","1520M"); 
ini_set('display_errors',1); 
error_reporting(E_ALL); 
$emails = $_POST['emails']; 
$data = $_POST['data']; 
$path= $_SERVER['DOCUMENT_ROOT']."/data/$data"; 
$lines = file($path); 
$remove = explode("\n",$emails); 
foreach ($remove as $rm) 
{ 
foreach($lines as $key => $line) 
if(stristr($line, $rm)) unset($lines[$key]); 
} 
$data1 = implode('', $lines); 
$file = fopen($path, "w+"); 
fwrite($file, $data1); 
fclose($file); 
?> 

は、どのように私は、ファイルから電子メールIDの異なる番号を削除しないと、ファイルに残っている他のIDを維持することができますか?私はから
[email protected] [email protected]メールを削除する必要が
[email protected] [email protected] [email protected]

........
........

として

txtファイルは、電子メールIDが含まファイル。

+0

ファイルは、すでにすべての行と列を返すので、私はこれまでのフォームからメールIDを掲示していますので、爆発改行 –

+0

で爆発するために必要が使用されていないがありますページには$ _POST ['emails']が付いています。これらの電子メールは一致しているため、削除する必要がありますが、削除はしていません。 – Shaun

+0

あなたのメールがどのくらい正確に保存されているかの例を表示できますか? –

答えて

0

ここでは、次のとおりです。

ini_set("memory_limit","1520M"); 
error_reporting(E_ALL); 

// if something has been posted 
if (isset($_POST['emails'])) 
{ 
    $emails_delete = preg_split('/\r\n|[\r\n]/', $_POST['emails']); 
    $emails = file('emails.txt'); 

    foreach ($emails_delete as $delete) 
    { 
     $email = trim($delete); 

     // check if the email is in the list 
     $pos = array_search($email, $emails); 
     if (false !== $pos) 
     { 
      unset($emails[$pos]); 
     } 

     // save it again 
     file_put_contents('emails.txt', $emails); 
    } 
} 
?> 
<form action="" method="post"> 
    <textarea name="emails"></textarea><br /> 
    <input type="submit" value="Delete" /> 
</form> 
+0

ちょっとマヌエル、あなたの答えをありがとうが、コードはフォームから送信された電子メールアドレスを削除していません – Shaun

+0

一度だけ削除します。 Idkはそれで何が間違っているかtbh、いくつかの奇妙な改行のthingy。データベースを使用することをお勧めしますか? $ –

+0

私の電子メールリストはテキストファイルに保存されています – Shaun

関連する問題