recher chaine dans fichier texte

recher chaine dans fichier texte - PHP - Programmation

Marsh Posté le 08-06-2004 à 15:45:45    

salut,
 
j'ai un fichier .dat qui contient un email par ligne avec à chaque fois | à la fin du style :
t@o.com|
r@o.fr|
...
 
ce que je voudrais faire c'est vérifier si un email est déjà present au moment de l'insertion. je n'ai pas vraiment d'idée comment m'y prendre vu que j'y connais presque rien en fichiers.
 
merci d'avance
 
@+

Reply

Marsh Posté le 08-06-2004 à 15:45:45   

Reply

Marsh Posté le 08-06-2004 à 15:53:20    

voir avec strstr
 
si tu veux traiter sur chaque sous-chaine, utilises explode

Reply

Marsh Posté le 08-06-2004 à 18:03:58    

j'ai essayé ce code mais ça marche pas, je vois pas comment je pourrais utiliser strstr !! :
 

Code :
  1. $filename = '/hom.../cgi-bin/....dat';
  2. $email =trim("$email|" );
  3. $email2 =trim("$email|\n" );
  4. $fd = fopen($filename, 'r');
  5. while (!feof ($fd)) {
  6.     $buffer = trim(fgets($fd, 4096));
  7.  
  8. if ($buffer != $email)
  9.  {
  10. $fp = fopen($filename, 'a');
  11. flock($fp, 2);
  12. fwrite($fp, $email2);
  13. fclose($fp);
  14. }
  15. echo "$buffer";
  16. echo "<br>";
  17.   }
  18.   fclose ($fd);


 
voila je vois bien que c pas qu'il faut faire mais je n'ai vraiment pas d'idée !
 
merci d'avance


Message édité par worldcinemag le 08-06-2004 à 18:04:21
Reply

Marsh Posté le 08-06-2004 à 18:40:54    

worldcinemag a écrit :

j'ai essayé ce code mais ça marche pas, je vois pas comment je pourrais utiliser strstr !! :
 

Code :
  1. $filename = '/hom.../cgi-bin/....dat';
  2. $email =trim("$email|" );
  3. $email2 =trim("$email|\n" );
  4. $fd = fopen($filename, 'r');
  5. while (!feof ($fd)) {
  6.     $buffer = trim(fgets($fd, 4096));
  7.  
  8. if ($buffer != $email)
  9.  {
  10. $fp = fopen($filename, 'a');
  11. flock($fp, 2);
  12. fwrite($fp, $email2);
  13. fclose($fp);
  14. }
  15. echo "$buffer";
  16. echo "<br>";
  17.   }
  18.   fclose ($fd);


 
voila je vois bien que c pas qu'il faut faire mais je n'ai vraiment pas d'idée !
 
merci d'avance


 :non: on ne t'écrira pas ton script ici.
commences par comprendre comment fonctionne la gestion de fichiers en php et accessoirement le reste de ce langage >> www.phpdebutant.org
 
bon courage

Reply

Marsh Posté le 08-06-2004 à 18:46:35    

moi je peux te dire comment je procederai ...
 
je lis mon fichier et le stockerai dans une variable.
 
ensuite je splitte le contenu de ma variable sur '|'
(indice : http://www.nexen.net/docs/php/anno [...] .split.php )
 
et enfin je regarde si mon email courant se trouve ds mon tableau
 
(indice 2 : http://www.nexen.net/docs/php/anno [...] -array.php )
 
 
[:itm]
 
 
si tu ne parviens pas a faire ca, c'est que t'y mets de la mauvaise volonté  [:simogeo]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 08-06-2004 à 23:18:05    

merci simogeo !
grace à tes conseils j'ai réussi à faire ce que je voulais.
 
je met le code au cas ou quelqu'un d'autre le voudrait :
 

Code :
  1. $filename = '.........dat';
  2. $email =trim("$email" );
  3. $email2 =$email.'|'."\n";
  4. $fd = fopen($filename, 'r');
  5. $liste_mails = array();
  6. while (!feof ($fd)) {
  7.     $buffer = trim(fgets($fd, 4096));
  8. list($email3) = split('[|]', $buffer);
  9.   array_push($liste_mails,$email3);
  10. echo "$email3<br>";
  11. }
  12. $email3=trim($email3);
  13.   fclose ($fd);
  14.   if (in_array ($email, $liste_mails)) {
  15.     print "Trouvé email";
  16.   }
  17.   else {
  18. $fp = fopen($filename, 'a');
  19. flock($fp, 2);
  20. fwrite($fp, $email2);
  21. fclose($fp);
  22. echo "inser $email2";
  23. }


 
encore merci !
 
@+


Message édité par worldcinemag le 08-06-2004 à 23:19:20
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed