PHP et écriture au milieur d'un fichier

Hello,

J’aimerrais pouvoir ajouter dans un fichier une chaine de carractère mais pas à la fin mais 6 caractères avant la fin (c’est un fichier xml super simple).

Alors voilà ce que je fais :

$filep = fopen(‘book.xml’, ‘a+’); //Normalement j’ouvre le fichier en lecture + ecriture et met le pointeur à la fin.  C’est la meme chose si je met a pour juste écriture.

$long=-strlen(’’);   // normalement devrait me renvoyer la longueur de la string en neg pour reculer
 fseek($filep,$long,SEEK_END);   //normalement devrait se mettre à 7 carractère de la fin
fputs($filep, $string); //MEt la string ou le pointeur s’est arrêté
fclose ($filep);  //fermeture du fichier // Ferme le fichier il y a pas de problème.

Le problème c’est que la string est toujours écrites en fin de fichier.

J’espère que vous pourrez m’aider rapidement car j’en ai besoin pour un truc que je dois rendre lundi. Oui je sais je m’y prends tard.

Essaie de l’ouvrir en ‘r+’.

Ca marche avec ‘r+’, je dois juste réécrire les 6 derniers carractères mais le résultat est là c’est l’essentiel pour le moment.

Merci Xentyr.

C’est normal que ca ne fonctionnait pas en a+ puisque c’est le mode “append”, et t’es pas cense ecrire ailleurs qu’a la suite du fichier.
Et pour r+, c’est l’ecriture ou on veut, mais il n’existe pas de mode “insertion” dans fopen, il faut le faire a la main. Perso, dans un cas comme ca, je load le texte avant l’insertion en memoire, j’insere le texte en plus, et je load la fin du fichier. Couteux en memoire mais tres simple.

LoneWolf
i+ : insert text in the file.

Je note pour plutard, merci pour les précisions.