PHP код за показване на CSV файл с опция за премахване на всеки ред

Успях да съставя код за показване на CSV файл, съдържащ списък с имейли (всеки ред е имейл адрес) за група за бюлетин. Затруднявам се с добавянето на функция „премахване“ пред всеки от тези имейл адреси, в случай че имейлът вече не е валиден (или потребителят вече не иска да получава имейли). Ето какво имам:

функция my_magic_function(){

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

if (file_exists($file )) {

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

    echo '<p><a href="/bg/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