Effacer une ligne dans fichier texte en php

cs_michaelminelli1
Messages postés
13
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
13 janvier 2011
- 17 mars 2010 à 22:33
Arto_8000
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
- 19 mars 2010 à 05:50
Bonjour,

Ca fait deja un moment que je cherche sur le web comment supprimer une ligne dans un fichier texte, je vous explique plus en details :

Ja'i un fichier texte "data.txt" qui comporte ces données (Je sais c'est idiot de mettre des utilisateurs dans un fichier texte mais c'est ce que l'on m'a demandé :D ):
admin;123;1;http://www.javascriptfr.com/g/logos/normal/logojs.png;
michael;123;2;;
fake;123;54;;
admin2;123;;;


Ce fichier est bien sur toujours en modification donc ne comporte pas un nombre de ligne fixe.

ma question est la suivante : comment faire pour supprimer la ligne correspondant a un nom d'utilisateur rentrer par exemple dans un formulaire?

Merci d'avance pour votre precieuse aide et Bonne Journée

2 réponses

ChasseurDeChimeres
Messages postés
292
Date d'inscription
mercredi 7 novembre 2007
Statut
Membre
Dernière intervention
15 janvier 2013
3
18 mars 2010 à 14:43
Salut;
il te faudrait utiliser lesfonctions php "fopen", "fread" et "fwrite" qui permettent de manipuler de manipuler les fichiers textes, il te faudra ensuite repérer tes lignes en découpant tout ça en tableau avec la fonction "explode".
Mais franchement le XML à été créé justement pour ce genre de manipulations, il serait peut-être temps de l'utiliser.
bon courage.
0
Arto_8000
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
7
19 mars 2010 à 05:50
Le plus simple c'est de rester en mode texte (parce que le XML ça reste plus lourd surtout que dans ce cas ce n'est pas du tout nécessaire) et d'utiliser un algorythme comme ceci :

<?php
$tab = file("data.txt");
$tonUser = "userASupprimer";

for ($i=0; $i<count($tab); $i++) {
if (substr($tab[$i],0,strpos($tab[$i], ';')) == $tonUser) {
unset($tab[$i]);
}
}

file_put_contents("data.txt", implode($tab));
?>
0