2011-12-03 10 views
0

ニュースレターグループの電子メールのリスト(各行は電子メールアドレス)を含むCSVファイルを表示するコードをまとめることができました。私は、電子メールがもはや有効でない(またはユーザーがもはや電子メールを受信したくない)場合に、それらの電子メールアドレスの前に「削除」機能を追加するのに苦労しています。ここで私が持っているものです。CSVファイルを表示するPHPコードで各行を削除するオプション

関数my_magic_function(){

$file = TEMPLATEPATH."/user_list.csv"; 

if (file_exists($file)) { 

    $handle = fopen($file , "r+"); 

    echo '<p><a href="/wp-content/themes/summer/user_list.csv"> Download the CSV File</a></p>'; 

    $contents = fread($handle, filesize($file)); 

    $emails = explode(',',$contents); 

    for ($x=0; $x<count($emails) -1; $x++){ 

     echo $emails[$x]."; (remove)<br />"; 

    } 

    fclose($handle); 

}else{ 

    echo "empty"; 

} 

}

私は何をしないのですか?特定のメールアドレス(または行)を削除するにはどうすればよいですか?

おかげ

+0

これはCSVファイルの解析方法ではありません。 ['fgetcsv'](http://php.net/manual/en/function.fgetcsv.php)を使用してください! –

+0

これはCSVファイルではありません。電子メールアドレスのコンマ区切りリストです。 'mailparse_rfc822_parse_addresses()'はもっと適用可能かもしれません。少なくとも、 'fopen/fread/fclose'を介して' file_get_contents() 'を見てください。 – mario

答えて

1

出力削除リンク:再配列に電子メールリストを読み込むこと削除スクリプトで

echo "<a href=delete.php?mail=$email[x]>delete</a> "; 

。エントリを見つけるには​​を使用し、返されたキーには簡単なunset()を実行します。その後、ファイルを書き戻します。

$emails = str_getcsv(file_get_contents("emails.txt")); 

$del_index = array_search($emails, $_GET["mail"]); 
unset($emails[ $del_index ]); 

file_put_contents("email.txt", join(", ", $emails)); 

forループの代わりにforeachを使用してに見えます。

関連する問題