( php ) fseek : Choisir la ligne à réécrire

Profil bloqué -  
Leviathan49 Messages postés 267 Statut Membre -
Bonjour,

voila j'explique mon problème :
Je veux réécrire dans un fichier, à la ligne 2
alors je dois positionne le curseur virtuel. Y a-t'il une facon de choisir la ligne sur laquelle on veut écrire ?
$fichier_inventaire = fopen('save_inventaire.php', 'r+'); // ouverture du fichier \\
fseek($fichier_inventaire,'POSITIONNER_LE_CURSEUR_EN_NBR_DE_CARACTERES');
fputs($fichier_inventaire, ' $magique_pendentif_01 = 1 ');
fclose($fichier_inventaire);


ou une fonction faite pour ca aussi si vous connaissez?
Merci d'avance !


A voir également:

3 réponses

avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
Salut.

Tu pourrais lire tout le fichier et placer son contenu dans une variable.
Ensuite, tu sépares chaque ligne dans un array avec la fonction explode(), puis tu modifies la deuxième entrée.
Pour finir, tu réassembles le tout, et tu sauvegarde.

<?php
/* Lecture */
$fichier = fopen('fichier.txt','r+');
$chaine = '';
while(!feof($fichier)) {
    $chaine .= fgets($fichier, 4096);
}

/* Remplacement */
$lignes = explode("\n", $chaine);
$lignes[1] = 'Contenu de la seconde ligne';

/* Assemblage */
$chaine = '';
foreach($lignes as $ligne) {
    $chaine .= $ligne."\n";
}

/* Enregistrement */
fseek($fichier, 0);
fputs($fichier, $chaine);
fclose($fichier);
?>
3
Profil bloqué
 
Ok, mais j'ai pas encore le niveau pour ca. Il n'y a pas un moyen de resoudre mon problème avec qlq chose d'encore plus simple stp ? Sinon je m'avancerais plus, mais mon projet avait pour but de savoir ce que je n'avais pas encore acquis et qui correspondait à mon niveau
0
Leviathan49 Messages postés 267 Statut Membre 70
 
Sinon en plus simple :
$numero_ligne = 2; 
$contenu = "nouvelle ligne 2\n" 

$data = file("fichier.txt"); // lit le fichier et stocke chaque ligne dans un tableau 
$data[$numero_ligne] = $contenu; // change le contenu de la ligne 2 

$file = fopen("fichier.txt","w");  // sauvegarde les changements 
foreach($data as $ligne) 
{ 
    fwrite($file,$ligne);    
} 
fclose($file);
0