Код PHP для отображения файла CSV с возможностью удаления каждой строки

Мне удалось собрать код для отображения CSV-файла, содержащего список электронных писем (каждая строка — это адрес электронной почты) для группы информационных бюллетеней. Я изо всех сил пытаюсь добавить функцию «удалить» перед каждым из этих адресов электронной почты на случай, если электронное письмо больше недействительно (или пользователь больше не хочет получать электронные письма). Вот что у меня есть:

функция 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";

}

}

Что мне не хватает? Как сделать, чтобы «(удалить)» удалял этот конкретный адрес электронной почты (или строку)?

Спасибо


person yellow_taxi426    schedule 03.12.2011    source источник
comment
Это не то, как вы анализируете файл CSV !!! Используйте fgetcsv!   -  person Francis Avila    schedule 04.12.2011
comment
Это вообще не файл CSV. Это список адресов электронной почты, разделенных запятыми. mailparse_rfc822_parse_addresses() может быть еще более применимым. По крайней мере, обратите внимание на file_get_contents(), а не на fopen/fread/fclose.   -  person mario    schedule 04.12.2011


Ответы (1)


Вывести ссылку на удаление:

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

В этом сценарии удаления снова читайте список адресов электронной почты в массиве. Используйте array_search(), чтобы найти запись, а затем выполните простую операцию 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));

Также рассмотрите возможность использования foreach вместо цикла for.

person mario    schedule 03.12.2011