[PHP] : supprimer une ligne d'un fichier
Résolu/Fermé9 réponses
darkneurone
Messages postés
39
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
12 juin 2008
12
25 mars 2008 à 00:33
25 mars 2008 à 00:33
bonsoir,
<?php
$tab = array();
//ouverture du fichier
$fichier = fopen('ton_fichier.txt','r');
if($fichier){
while(!feof($fichier)){
array_push($tab, fgets($fichier));
}
fclose($fichier);
}
//toutes les lignes de notre fichier sont stockées dans le tableau tab...
$fic = fopen('ton_fichier.txt', 'w');
if($fic){
//on efface l'intégralité du fichier
while(!feof($fic)){
fputs('');
}
//finalement on recopie toutes les données sans la première ligne...
$nb = count($tab);
$suppr = 3; //suppr ligne numero 3
for($i=0;$i<$tab;$i++){
if(!($i === ($suppr-1))){
$fic = fputs($tab[$i]);
}
}
fclose($fic);
}
?>
je n'ai pas testé le code et il est loin d'être optimisé... c'est une idée comme ça...
Bonne soirée
EDIT : j'avais mal lu ton problème... le script effaçait que la première ligne de ton fichier... je l'ai modifié pour effacer la ligne que tu veux... mais bon je ne l'ai pas testé... et il est pas du tout optimisé...
<?php
$tab = array();
//ouverture du fichier
$fichier = fopen('ton_fichier.txt','r');
if($fichier){
while(!feof($fichier)){
array_push($tab, fgets($fichier));
}
fclose($fichier);
}
//toutes les lignes de notre fichier sont stockées dans le tableau tab...
$fic = fopen('ton_fichier.txt', 'w');
if($fic){
//on efface l'intégralité du fichier
while(!feof($fic)){
fputs('');
}
//finalement on recopie toutes les données sans la première ligne...
$nb = count($tab);
$suppr = 3; //suppr ligne numero 3
for($i=0;$i<$tab;$i++){
if(!($i === ($suppr-1))){
$fic = fputs($tab[$i]);
}
}
fclose($fic);
}
?>
je n'ai pas testé le code et il est loin d'être optimisé... c'est une idée comme ça...
Bonne soirée
EDIT : j'avais mal lu ton problème... le script effaçait que la première ligne de ton fichier... je l'ai modifié pour effacer la ligne que tu veux... mais bon je ne l'ai pas testé... et il est pas du tout optimisé...
Un truc qui peut être pratique. si vous voulez commenter une ligne d'un fichier (.txt, .php ....) avec du code php
Cela peut être utilisé pour les initialisation de base de données qui dois se faire une seule fois:
J'ai testé le code. J'espère que ca sera utile.( c'est mon premier poste dans le site :) )
Cela peut être utilisé pour les initialisation de base de données qui dois se faire une seule fois:
<?php // Commenter la ligne du fichier index.php $numlign="1" ; // numéro de la ligne( l'indexation commence par 0 ), ici c'est la ligne 2... $donnee=file('index.php'); // on met le contenu du fichier dans $donnee $fichier=fopen('index.php',"w"); // ouvre le fichier en droit d'écriture fputs($fichier,''); // on le vide $i=0; foreach($donnee as $d) // on ne commente que la ligne précisée dans $numlign. { if($i!=$numlign) fputs($fichier,$d); else fputs($fichier,"#".$d); i++; } fclose($fichier); ?>
J'ai testé le code. J'espère que ca sera utile.( c'est mon premier poste dans le site :) )
larose51
Messages postés
9
Date d'inscription
samedi 15 décembre 2007
Statut
Membre
Dernière intervention
20 avril 2020
3
14 sept. 2010 à 16:24
14 sept. 2010 à 16:24
Pour securiser un dossier, on peut y mettre un fichier texte contenant les logins acceptés, avec leur mot de passe propre. Avec le fichier .htaccess, il y a le fichier "motsdepassesouautrenom.txt"
qui contient des lignes du style:
login1:motdepasse1
login2:motdepasse2
login3:motdepasse3
j'ai bien lu les procédures qui précedent, et je vais m'en servir.
Mais je souhaiterais savoir comment faire en sorte que chaque mot de passe ne soit utilisable qu'une seule fois, ce qui revient à supprimer la ligne où le mot de passe est présent: la fois suivante, le login est rejeté, puisque le mot de passe n'y est plus!
comment ecrire la routine qui va bien ?
merci de votre aide,
cordialement,
larose51
qui contient des lignes du style:
login1:motdepasse1
login2:motdepasse2
login3:motdepasse3
j'ai bien lu les procédures qui précedent, et je vais m'en servir.
Mais je souhaiterais savoir comment faire en sorte que chaque mot de passe ne soit utilisable qu'une seule fois, ce qui revient à supprimer la ligne où le mot de passe est présent: la fois suivante, le login est rejeté, puisque le mot de passe n'y est plus!
comment ecrire la routine qui va bien ?
merci de votre aide,
cordialement,
larose51
PLutot que de stocker dans un fichier les lignes que tu veux garder, stocke les dans un tableau.
tu ouvres la lignes si elle est bonne tu la met dans un tableau autrement tu la laisse tomber. Une fois le ifchier parcourut en entier tu le remplit avec le contenu du tableau. J'ai pas les fonctions en tête mais ce n'est pas très compliqué je penses
tu ouvres la lignes si elle est bonne tu la met dans un tableau autrement tu la laisse tomber. Une fois le ifchier parcourut en entier tu le remplit avec le contenu du tableau. J'ai pas les fonctions en tête mais ce n'est pas très compliqué je penses
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
29 mars 2012 à 20:33
29 mars 2012 à 20:33
bonsoir,
1 - ne te rajoute pas sur un topic déja considéré comme résolu, mais crée en un nouveau
2 - oui c'est possible:
tu lis le contenu du fichier par la fonction file de php qui te sort un array ligne par ligne
tu parcours cet array par une boucle foreach par exemple, tu supprime la ligne qui t'interresse
tu écris le nouvel array dans le fichier
1 - ne te rajoute pas sur un topic déja considéré comme résolu, mais crée en un nouveau
2 - oui c'est possible:
tu lis le contenu du fichier par la fonction file de php qui te sort un array ligne par ligne
tu parcours cet array par une boucle foreach par exemple, tu supprime la ligne qui t'interresse
tu écris le nouvel array dans le fichier
$id_file = fopen("id.txt", "r");
$file=array();
$used=array();
while($ligne=fgets($id_file,2000) )
{
if ($ligne!='searchlword'){
$file[]=$ligne;
}else{
$used[]=$ligne;
}
$i++;
}
fclose( $id_file );
//copy again clean content to file
//---------------------writ
$id_file = fopen("id.txt", "w");
foreach($file as $id){
fputs( $id_file, $id, strlen( $id ));
}
fclose( $id_file );
//---------------------end writ
$file=array();
$used=array();
while($ligne=fgets($id_file,2000) )
{
if ($ligne!='searchlword'){
$file[]=$ligne;
}else{
$used[]=$ligne;
}
$i++;
}
fclose( $id_file );
//copy again clean content to file
//---------------------writ
$id_file = fopen("id.txt", "w");
foreach($file as $id){
fputs( $id_file, $id, strlen( $id ));
}
fclose( $id_file );
//---------------------end writ
y'a personne qui se sent d'expliqué clairement comment on peut supprimer une ligne d'un fichier texte écrit via php ???
Exemple: Avec le php j'ai écrit cette phrase dans un fichier texte "coucou orion"
comment faire pour changer "coucou orion" par "coucou orion il est $heure" ?
Sa a l'air simple mais je bataille :p
Exemple: Avec le php j'ai écrit cette phrase dans un fichier texte "coucou orion"
comment faire pour changer "coucou orion" par "coucou orion il est $heure" ?
Sa a l'air simple mais je bataille :p
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
18 avril 2005 à 19:16
18 avril 2005 à 19:16
Ben ouai, tu passe par la mémoire...
++
++
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
19 avril 2005 à 16:26
19 avril 2005 à 16:26
Bon.. ben voilà, c'est ca que je voyait, donc comme dit Nashouille, il te reste à mettre en pratique, ca devrait prendre qq lignes.
++
++
25 mars 2008 à 09:18
une simplification avec la fonction file():
tout ça:
$tab = array();
//ouverture du fichier
$fichier = fopen('ton_fichier.txt','r');
if($fichier){
while(!feof($fichier)){
array_push($tab, fgets($fichier));
}
fclose($fichier);
}
peut être remplacé par:
qui fait tout l'open le close etc...
19 juil. 2011 à 10:31
14 sept. 2011 à 19:19
<?php
$file = new SplFileObject("/wamp/www/files/test.txt","w+");
$data = $file->fgets();// Read first line
echo $file->ftell()."<br>";// Where are we?
$file->ftruncate($file->ftell())."<br>";
// Rewind and read data
$file->rewind();
echo $file->fgets();
14 sept. 2011 à 19:21
$file = new SplFileObject("/wamp/www/files/test.txt","w+");
$data = $file->fgets();// Read first line
echo $file->ftell()."<br>";// Where are we?
$file->ftruncate($file->ftell())."<br>";
// Rewind and read data
$file->rewind();
echo $file->fgets();