Page 1 sur 1

Réécrire une ligne dans un fichier txt

Posté : 19 janv. 2019, 23:18
par Reka
Bonjour,
Je cherche à remplacer une ligne dans un fichier txt.

Ledit fichier txt se présente avec un contenu qui apparait comme tel
pseudo;date;score;scorebis;ip_chiffree;

J'ai une condition qui vérifie que les données envoyées correspondent au pseudo et à l'ip
si l'utilisateur envoie une ligne qui correspond à son ip + pseudo, le but est de remplacer la ligne avec des données renouvelées

J'ai tenté ce script, mais il ne fonctionne pas (identifie la ligne à remplacer mais ne remplace rien dans le fichier texte.txt :
//nouvelles donnees
$nom = 'Polipol';
$date = '2018-02-23';
$points = 345;
$nbmots = 34;
$ipcryptee = '4b84b15bff6ee5796152495a230e45e3d7e947d9';

// Ce qui existe
// fichier texte.txt contient :
// poil;2018-12-12;23;10;4b84b15bff6ee5796152495a230e45e3d7e947d9;
// pipi;2018-12-19;123;82;4b84b15bff6ee3216152495a230e45e3d7e946ec;

// Ce qu'on cherche
$search = 'poil';
$ipcryptee_check = '4b84b15bff6ee5796152495a230e45e3d7e947d9';

// Ce qu'on remplace
$txt = "$nom;$date;$points;$nbmots;$ipcryptee;\n";

// Fichier
$myfile = fopen("texte.txt", "a+") or die("Unable to open file!");

$lines = file('texte.txt');
foreach($lines as $line)
{
  // Vérifier si le fichier contient ce que je cherche 
  if(strpos($line, $search) !== false && strpos($line,$ipcryptee_check) !== false) {
    echo $line;

    // si c'est le cas, remplacer la ligne par le nouveau contenu
    $repl = substr_replace($line, $txt, 0);
    fwrite($myfile, $repl);
    fclose($myfile);
  }
}
Pourriez-vous me donner un coup de pouce pour le rendre fonctionnel, svp?
Par avance, un tout grand merci !

Re: Réécrire une ligne dans un fichier txt

Posté : 19 janv. 2019, 23:30
par or 1
$myfile est ouvert à un moment dans du code que l'on a pas ?

Re: Réécrire une ligne dans un fichier txt

Posté : 20 janv. 2019, 01:18
par Reka
$myfile est ouvert à un moment dans du code que l'on a pas ?
Maintenant, oui :lol:

(Mais ça ne marche quand même pas)

Re: Réécrire une ligne dans un fichier txt

Posté : 21 janv. 2019, 17:11
par Reka
Personne pour me donner une piste ? svp ?

Re: Réécrire une ligne dans un fichier txt

Posté : 22 janv. 2019, 01:36
par Spols
Il faut que ton pointeur dans $myfile correspondent à la ligne à modifié, et même comme ça je pense que tu ne fera qu'ajouter une ligne.

le plus simple est de récupérer toutes les lignes, de trouver la bonne de la modifier et ensuite remettre toutes les lignes dans le fichier en écrasant la version précédente.
Je pense pas qu'il existe l'inverse de file() en php mais un file_put_contents() avec un implode() fera l'affaire

Re: Réécrire une ligne dans un fichier txt

Posté : 26 janv. 2019, 14:10
par Reka
Merci Spols, désolée pour le délai de réponse.
Je comprends en théorie l'idée, je vais essayer de la mettre en pratique.