2010-07-21 6 views

Répondre

2

Vous seriez mieux d'utiliser une base de données parce que ces opérations peuvent marcher sur l'autre .. mais:

Ajouter:

$fp = fopen("list.txt","a"); //a is for append 
fputs($fp,"[email protected]" . "\n"); 
fclose($fp); 

Supprimer:

$file = file_get_contents("list.txt"); 
unlink("list.txt"); //delete existing file 
$fp = fopen("list.txt","w"); //w is for write/new 
$lines = split("\n",$file); 
while (list(,$email) = each($lines)) { 
    if ($email != "[email protected]") fputs($fp,$email . "\n"); 
} 

Encore une fois .. fortement recommandé d'utiliser une base de données ... ce n'est pas optimal.

+0

Raccourci pour le fichier 'file_get_contents()'/'split()' est 'fichier()', avec éventuellement même '$ array_of_lines = fichier ('/ chemin/vers/fichier', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);' – Wrikken

1

En ce qui concerne l'épargne, vous pouvez fopen() en mode et juste annexant fwrite() à elle. En ce qui concerne la suppression d'un e-mail: vous devrez charger le fichier entier sous la forme d'une chaîne et l'enregistrer dans un fichier (remplaçant ainsi tout le contenu). Sans un mécanisme de verrouillage complexe, une condition de concurrence peut survenir lors de la sauvegarde du fichier, vous faisant perdre le (s) dernier (s) enregistrement (s).

Je recommande une simple base de données sqlite drop-in (ou une autre base de données si vous en avez déjà en production), donc vous pouvez facilement sauvegarder & supprimer certains emails, et verrouiller/éviter les conditions de course est fait automatiquement pour vous. Si vous avez toujours besoin d'un fichier texte à d'autres fins, exportez la liste des abonnements dans ce fichier avant de l'utiliser.

Questions connexes