Supprimer la ligne X d'un fichier txt - PHP - Programmation
Marsh Posté le 05-03-2013 à 21:45:49
Bonsoir,
Je prends l'hypothèse que chaque ligne ne contient qu'un seul mots.
Que tu respecte l'orthographe, que ta recherche ne contient aucune faute.
Ton soucis se réglera :
1- Par une méthode te permettant de comparer ce que tu saisie dans ton formulaire, au retour que tu auras en lisant ton fichier, avec la méthode (Ctrcmp) http://php.net/manual/fr/function.strcmp.php Si cette méthode ne te convient pas d'autres existent.
2- Créer un second fichier texte qui comprendra uniquement les lignes que tu gardes. Pas le choix.
Un petite recherche ?
- http://www.commentcamarche.net/for [...] xte-en-php
- http://forum.hardware.fr/hfr/Progr [...] 3673_1.htm
Marsh Posté le 06-03-2013 à 10:02:15
$ArrayFile = file_get_contents() qui te met le fichier dans un tableau (1 ligne du fichier par entrée dans le tableau)
unset($ArrayFile[$numLigneASupprimer]);
$Fichier = implode("\n", $ArrayFile);
Tu sauvegardes $Fichier dans un fichier.
Marsh Posté le 06-03-2013 à 18:47:50
bonjour
merci pour l'aide
mais je dois me louper quelque part
je me retrouve avec cette erreur :
Fatal error: Cannot unset string offsets in /xxxxx/xxxxxx/www/xxx/xxxxxx/c.php on line 215
voici le code
$ouvre=fopen("fichier.txt","r" );
$i = 0;
while ($i < ($img_compt2))
{
// on recupère la ligne courante
$temp = fgets($ouvre);
$i++;
}
/// simple echo de controle des données
echo '<br>Lien : '.$temp.'<br>Ligne :'.$img_compt2 ;
/// $temp : ligne complete dans le fichier c'est une url donc pas de coupure rien
/// $img_compt2 : le numero de la ligne dans le fichier
/// j'ai ajouté ça :
$ArrayFile = file_get_contents('fichier.txt');
echo $file ;
// l'écho $file marche bien j'ai le listing en une ligne du fichier txt
// la je bloque au unset que je mette [$temp] ou [$img_compt2]
unset($ArrayFile[$temp]);
// j'ai toujours la meme erreur
j'ai mis mes infos dans le code en ///
je suis un peu perdu la
j'ai pourtant le fichier.txt chargé , le numero de la ligne est ca valeur une url , mais ce unset refuse grrrrrrrrrr
Cdt
EDIT :
peut etre ne devrais je pas plus simple remplacer ma ligne X par "\n\r"
normalement ca doit le supprimer direct ?
EDIT 2 : j'ai mis le fopen en W et non r , la ca efface tous le fichier
Marsh Posté le 06-03-2013 à 19:27:19
Ta variable $ArrayFile n'est pas un array, mais une chaine.
Utilise file()
Code :
|
Marsh Posté le 06-03-2013 à 19:46:57
je me retrouve avec cette erreur :
Warning: file_put_contents() expects at least 2 parameters, 1 given in
en ligne file_put_contents(implode("\n", $arrayFile));
$ligneAVirer je dois bien mettre la valeur de la ligne et non son numero ?
par contre $key c'est quoi ?
Marsh Posté le 06-03-2013 à 20:16:28
Ah oui mince, j'ai omis le 1er paramètre, c'est à dire le nom du fichier, n'hésite pas à consulter la doc.
Citation : int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] ) |
Oui, tu peux mettre la valeur de la ligne, mais si t'as déjà le n° de la ligne devant être supprimée dans le fichier, autant s'en servir, cela évitera les comparaisons dans la boucle.
$key, ce sont les index de l'array.
Marsh Posté le 06-03-2013 à 20:50:03
la valeur de la ligne a supprimer dans le fichier Fichier.txt est la valeur $img_compt2
donc si j'ai loupé lol
ca doit ressembler à ca :
file_put_contents($arrayFile, "\n" [, $img_compt2]);
edit :
bon la ligne au dessus marche pas
j'ai donc testé ça :
file_put_contents('fichier.txt' , "\n" , $mon_numero_de_ligne_à_supprimer);
ca vide le fichier.txt completement
Marsh Posté le 06-03-2013 à 22:01:29
Tu comprends ce que tu fais ?
Là tu écrases ton fichier par la valeur d'une variable contenant un n° de ligne
Sachant que la valeur à supprimer est contenu dans ta variable $img_compt2 , t'avais juste à la remplacer dans le morceau de code que je t'ai montré.
Code :
|
Marsh Posté le 07-03-2013 à 04:24:09
en fait pas trop premiere fois que j'utilise ca
la valeur à supprimé est dans $temp , la valeur $img_compt2 est egale a la ligne de $temps dans le fichier.txt
je decouvre et j'essai de mieux comprendre , je testerais ca cette apres midi .
merci pour ton aide bistouille
Marsh Posté le 07-03-2013 à 14:37:36
bon ca ne marche pas , et ca me bug le reste du code pas de chance moi .
ca touche meme pas a mon fichier txt , mais ca me flood le reste de mon code .
un code me donne le nbr de ligne dans le fichier txt .
mais avec ce code en plus il affiche n'importe quoi ......................
suis je vraiment obligé de refaire une boucle avec $filename et recharger une nouvelle fois mon fichier txt ??
n'y a t'il pas une autre facon de supprimer cette ligne
en utilisant le fopen que j'ai deja utilisé au dessus pour trouver ma ligne et ce quelle contient ?
edit :
j'ai testé ton code seul dans un fichier php , il se passe rien et ca me bug le fichier txt
Marsh Posté le 07-03-2013 à 18:09:30
merde je sais pas ce que j'ai foutu, j'ai inversé clef/valeur dans le foreach, fatigué moi hier
Bon, sinon, montre l'intégralité de ton code.
Marsh Posté le 07-03-2013 à 18:55:23
pas de mal bistouille
je viens de trouver le probleme
Citation : |
et la ca marche
merci pour ton aide bistouille , tres precieuse
une derniere question et apres je te laisse
suite à cette fonction au dessus je veux supprimer en meme temps le fichier qui correspont a la ligne , c'est une url http://www..................image.png
le hic c'est que l'image ce trouve dans un autre dossier plus haut il est à la racine de mon site
j'ai donc fais un UNLINK mais j'ai une erreur :
Citation : $temp = 'http://www.monsite.fr/img/image.png' // par ex |
// je supprimer le http car unlink aime pas
Citation : $url_sup =str_replace("http://www.monsite.fr/","",$temp); |
// je remonte a la racine de mon ftp ou ce trouve mon site
Citation : $url_sup = '/homez.xxx/monsite/www/'.$url_sup ; |
mais je me retrouve avec
Citation : Warning: unlink(/homez.xxx/monsite/www/img/image.png ) [function.unlink]: No such file or directory in /homez.xxx/monsite/www/........php on line 226 |
226 c'est le unlink
j'ai loupé un truc ?
EDIT :
j'ai testé le @unlink j'ai pas d'erreur mais impossible de supprimer le fichier
testé :
@unlink('http://www.monsite........png) // rien
@unlink('../img/image.png) // rien non plus
EDIT 2 :
bon je pense avoir trouvé le soucis un "espace" qui traine
quand je fais :
Citation : unlink('/homez.xxx/monsite/www/img/image.png'); |
ca marche marche
j'ai fais un echo de mon $url_sup qui est envoyé dans le unlink($url_sup)
et je me retrouve avec ça :
Citation : unlink('/homez.xxx/monsite/www/img/image.png '); |
apres le PNG j'ai un espace du coup ca bloque .... impossible de le virer je comprends pas
j'ai beau faire
Citation : $url_sup =str_replace(' ','',$url_sup); |
$url_sup à toujours l'espace a la fin
Marsh Posté le 07-03-2013 à 20:25:48
Je suis pas bien sûr d'avoir tout saisi.
T'es sûr que c'est bien un espace ? À mon avis non, sinon ton str_replace fonctionnerait.
Je penche plus pour un saut de ligne, sers-toi de trim() sur ta variable, qui virera les tab, retours chariots, et sauts de lignes en début et fin de chaine.
Si ça fonctionne toujours pas, débogue avec count_chars() pour visualiser ce que ta chaine contient.
Marsh Posté le 07-03-2013 à 20:53:49
en fait la valeur $url_sup qui est
'httpwww.........imab/image.png '
je suis remonté plus haut elle se charge ainsi :
dans le fichier txt j'ai X lignes ainsi :
http://www..........image1.png
http://www..........image2.png
http://www..........image3.png
http://www..........image4.png
on imagine que $img_compt2 est = à 3
Citation : |
$temp est donc egal = http://www..........image3.png
je viens de retester si je fais un : echo '='.$temp.'=' ;
j'ai ça d'afficher : =http://www..........image3.png =
alors je devrais avoir =http://www..........image3.png=
j'ai un espace apres le format du fichier
Marsh Posté le 07-03-2013 à 21:09:40
auto reponse le trim a résolut le soucis
Citation : |
mmilllllllllllllllllllllllllllllllllllles merci bistouille
Marsh Posté le 08-03-2013 à 09:06:16
On peut pas faire un unlink sur une url. On fait un unlink sur un path d'une fichier sur le HDD.
regardes du côté de dirname() et de la constante __FILE__
Marsh Posté le 08-03-2013 à 13:20:49
rufo a écrit : On peut pas faire un unlink sur une url. On fait un unlink sur un path d'une fichier sur le HDD. |
en url relatif si ca marche
Marsh Posté le 18-02-2014 à 19:18:11
bonjour j'ai essayé de virer les lignes dans mon fichier texte a chaque fois qui contien le mot tucbidule j'ai essayer le script trouvé ici mais sa ne fonctionne pas....
Citation : |
Marsh Posté le 03-03-2014 à 07:33:39
Code :
|
Marsh Posté le 04-03-2014 à 16:37:48
T'as encore oublié de mettre le nom du fichier dans lequel sauvegarder dans file_put_contents
Marsh Posté le 05-03-2013 à 00:17:01
bonjour à tous ,
j'ai sous la main un fichier txt avec plusieurs lignes :
voiture
camion
velo
avion
train
autre
.........
avec un code php je peux faire une recherche , je lui demande la ligne "4" , le script me retourne la ligne 4 et le texte "avion"
je voudrais supprimer la ligne 4 mais impossible de trouver ce foutu bout de code
je voudrais aussi ne pas avoir de trou apres la suppréssion de la ligne 4 :
pas ça :
voiture
camion
velo
train
autre
.........
mais ça :
voiture
camion
velo
train
autre
.........
et a la prochaine demande de la valeur 4 il me retourne cette fois "velo"
voici le dote qui me permet via un FORM et une valeur numerique d'aller chercher la ligne et afficher son contenu :
<?
$ouvre=fopen("images.up","r" );
$i = 0;
while ($i < ($img_compt2))
{
$temp = fgets($ouvre);
$i++;
}
echo '<br>Lien : '.$temp.'<br>Ligne :'.$img_compt2 ;
// ------------ >> $img_compt2 : c'est la valeur de la ligne a chercher , valeur entré via un formulaire
// ------------ >> $temp : c'est la valeur de la ligne
fclose($ouvre) ;
?>
la valeur $img_compt est ma ligne a supprimer
une idée ? car la je sais plus quoi chercher
cdt
Message édité par pascal- le 05-03-2013 à 00:26:26