Ecriture dans un fichier avec PHP

Fermé
brunooo - 17 mars 2009 à 14:43
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 18 mars 2009 à 11:53
Bonjour,

Je souhaiterais écrire une ligne de texte dans un fichier ini avec PHP. Cependant, je dois écrire à des lignes précises dans ce fichier.

J'ai vu que lorsque l'on fait fopen("chemin\fichier.ini","a") cela ne va pas car mon texte sera écrit à la fin du fichier. J'ai donc mis r+

Maintenant par exemple, mon fichier se présente de cette manière :

;commentaire

ligne 1
ligne 2

;commentaire

ligne a
ligne b

Il faudrait que j'arrive à rajouter mon texte après la ligne 2.

Est-ce que la fonction fseek pourrait m'aider ? Quelqu'un aurait une idée ?
A voir également:

8 réponses

Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
17 mars 2009 à 14:47
attention, fseek va ecraser les données (comme quand tu appuies sur la touche insert de ton clavier)
je te conseillerai de rechercher l'octet auquel tu va ecrire, de charger dans une variable le début du fichier, d'y concatener ton texte, puis d'y concatainer la fin de fichier
1
c'est bon j'ai trouvé la solution j'ai utilisé la fonction eregi afin de sélectionner et de stocker uniquement certaines parties de mon texte présent dans mon fichier (que j'ai délimité avec des commentaires).

Ensuite j'ai concaténer avec la ligne à rajouter.
Puis j'ai écrasé l'ancien fichier avec le nouveau texte stocké dans une variable.

merci pour l'aide :)
1
merci Nabla's je pense que c'est une très bonne solution.

mais maintenant je ne vois pas comment stocker juste le début de mon fichier dans une variable, puis juste la fin dans une autre variable... dois-je la stocker dans un tableau ? (array)

peut-être dois-je mettre en place des délimiteurs dans mon fichier .ini et faire une fonction eregi pour prendre juste une partie et la stocker dans ma variable ? c'est un peu flou pour moi...
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
17 mars 2009 à 16:25
tu fais une lecture de ton fichier dans une chaine normale ($machaine), jusqu'a l'endroit qui t'interesse, la tu ajoute le contenu ($machaine.="mon contenu a ajouter";) et ensuite, tu fini la lecture du fichier dans cette chaine(avec fread je croi....)

ensuite, tu effaces ton fichier, et tu le recrées completement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
D'accord j'ai réussi à faire la lecture du fichier en entier avec fgets voici le code

while (!feof($ouvre)){
$stock = fgets($ouvre,100);
echo "<br>".$stock;
}

mais maintenant je ne vois pas comment je pourrais stocker tout cela dans une variable. ici le code m'affiche une ligne après l'autre du fichier dans la page php.
puis comment m'arrêter à un endroit précis dans le fichier ? par exemple à un commentaire ? la fonction eregi ou preg_match pourrait-elle m'aider ? merci...
0
c'est bon excusez moi je sais comment stocker le contenu de mon fichier dans une variable. mais comment m'arrêter à un endroit précis dans le fichier ?

si maintenant j'ai dans mon fichier une ligne de commentaire ";debut", ne puis-je pas faire par exemple
while($ligne != ";debut"){
$ligne .= fgets($handle,100)
}

j'ai testé mais bon cela ne fonctionne pas...
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
18 mars 2009 à 09:43
j'ai cherche un peu pour toi ..
tu me met au php contre mon gré.

donc, tu prend ce code:

$stock="";
while (!feof($ouvre)){
$stock .= fgets($ouvre,1024);
}

tu as tout ton fichier dans la variable $stock
tu fais
$pos = strpos($stock,"la ou s'arreter");

ensuite, tu copies dans $result les $pos premires charactères de ta chaine
ensuite, tu fais $result.= "texte a ajouter"
puis
$result.= caractères après $pos

je te laisse chercher les fonctions pour prendre qu'une parti de la chaine...
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
18 mars 2009 à 11:53
y'a pas d'koi
0