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
Rejoignez-nous