Remplacer / Supprimer des données dans un fichier txt

Remplacer / Supprimer des données dans un fichier txt - PHP - Programmation

Marsh Posté le 30-06-2006 à 11:50:13    

Bonjour,
 
Trois questions (simples je pense):
 
1- -Remplacer des données:
 
J'ai un fichier texte contenant des données de comptes d'utilisateurs. Je voudrais, en très peu de manipulations, rechercher un alias dans le fichier et remplacer des données correspondant à cet alias par d'autres.
Pb: Seuls les alias sont uniques (il peut y avoir le même nom ou mdp pour 2 alias différents).
 
Ex des donnees de mon fichier:
-----------------
alias1/nom1/mdp1
alias2/nom2mdp2
alias3/nom3/mdp3
-----------------
 
2- -Supprimer des données:
Sur le même principe que le remplacement, je voudrais maintenant supprimer ces données (dont l'alias éventuellement).
 
J'ai déjà trouvé des fonctions comme str_replace ou preg_replace, mais je n'arrive pas à bien les utiliser.
 
Si quelqu'un peut me conseiller sur les bonnes fonctions à utiliser, je vous remercie!
 
Pour info, je suis sous PHP5.
 
3- La petite question bonus
Quel est le symbole qui permet un retour chariot en php dans un fichier txt? J'essaye fwrite($fichier,"\n" ) et ça ne marche pas!
 
Merci d'avance


Message édité par PedroBD le 30-06-2006 à 12:09:46
Reply

Marsh Posté le 30-06-2006 à 11:50:13   

Reply

Marsh Posté le 30-06-2006 à 12:11:36    

Si tu peux utiliser une base de données pour faire cela ce serait préférable.
 
Néanmoins, avec des expressions régulieres :
 
Etant en PHP5 tu vas pouvoir utiliser file_get_contens() pour affecter a une variable le contenu de ton fichier texte et file_put_contents pour ecrire dans un fichier texte le contenu d'une variable qui contiendra ton texte modifié.
 
pour modifier à la ligne 'alias2' le 2eme champ 'nom2' par 'toto' tu peux faires cela sur une chaine de caracteres :
 
preg_replace('#^(alias2)/([^/]+)/([^/]+)$#m', '\1/toto/\3', $texte)
 
l'algo revient donc a faire :
 
$texte = file_get_contents('fichier.txt');
preg_replace('#^(alias2)/([^/]+)/([^/]+)$#m', '\1/toto/\3', $texte)
file_put_contents('fichier.txt' , $texte);
 
pour supprimer les données c'est a peu de chose pres la meme chose :
preg_replace('#^alias2/[^/]+/[^/]+$#m', '', $texte)
 
Mais cela va laisser une ligne blanche dans le fichier texte.
 
Un solution serait d'utiliser la fonction file() qui retourne un tableau ou chaque case contient une ligne du fichier texte. Ensuite tu supprimes la ligne du tableau qui contient le bon alias. Enfin tu ecrases ton fichier texte a partir de ton nouveau tableau.


Message édité par afbilou le 30-06-2006 à 12:13:14
Reply

Marsh Posté le 30-06-2006 à 12:14:04    

Merci de ton aide, je vais tester tout ceci!

Reply

Marsh Posté le 30-06-2006 à 12:23:08    

tu peux utiliser array_filter pour supprimer la ligne du tableau qui commence par l'alias que tu souhaites :http://fr2.php.net/manual/fr/function.array-filter.php
 
>Tout ceci est un peu lourd je te le rappelle : si tu peux passer par une base de données fait le car ca te simplifiera grandement la vie.

Reply

Marsh Posté le 30-06-2006 à 12:30:31    

En fait je passe par un fichier texte pour sauver les données des comptes, mais je vais réfléchir à la solution de migrer vers une bd...

Reply

Sujets relatifs:

Leave a Replay

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