Ouvrir un fichier, aller a une ligne précise ?

Signaler
Messages postés
33
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
10 novembre 2006
-
Messages postés
67
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
20 octobre 2010
-
Bonjou :)
Alors voila mon problème, j'aimerais ouvrir un fichier txt et y ajouter un bloc de texte à un endroit précis !

Je m'explique, j'ai besoin d'inserer un bloc de texte à 5 ligne avant la fin du fichier et ce, quelque soit le nombre de ligne qu'il y à !
Par exemple :

1 bla
2 bla
3 bla
4 ...
...
...
25 -> Donnés a inserrer
...
...

Voila, en esperant être clair, si quelqu'un peut m'aider un peu a démarrer, je bute complet

Merci !
30 bla

5 réponses

Messages postés
67
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
20 octobre 2010

Hello,


Si ton fichier n'est pas trop important, tu peux utiliser la fonction
file() qui te renvoi un tableau qui contiens les lignes de ton fichiers
: 1 éléments du tableau = 1 ligne.


Il te suffit ensuite de rajouter tes lignes dans le tableau et de le réécrire dans le fichier.


Voilou =) si t'en veux plus t'as qu'à demander
Messages postés
33
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
10 novembre 2006

Ok pas mal cette fonction je vais essayer un truc du genre

i=1;
Tant que l'on est pas a la fin du fichier
{
    i++;
}
// A ce stade j'ai donc le num de la derniere ligne

fichier[i-5] ="blablabla"

Le probleme étant que je vais écraser la ligne i-5 actuelle !?
Il faudrais dabord, a la fin de la ligne i-5 actuelle sauter une ligne avant d'ecrire les nouvelle données !

Tu voit comment faire ?
Messages postés
67
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
20 octobre 2010

$indiceAjout = 24;

$ficEnTab = file($nomFic);

$nbLignes = count($ficEnTab);


$debut = array_slice($ficEnTab, 0, ($indiceAjout - 1));

$fin = array_slice($ficEnTab, $indiceAjout, $nbLignes);


$tabAAjouter = array("Ligne 1", "Ligne 2", "Ligne 3");


$nouveauTab = array_merge($debut, $tabAAjouter, $fin);


$chaine = implode("\n", $nouveauTab);


$fic = fopen($nomFic, "w");

fwrite($fic, $chaine);

fclose($fic);


Voilou aux quelques fautes d'indice de \n en fin de ligne et if() près =)
Messages postés
33
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
10 novembre 2006

Je vais décrypter ton code :)
Merci a toi !
Messages postés
67
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
20 octobre 2010

C'est vrai que kelkes commentaires auraient pu aider ^^